C语言第三次课
来源:互联网 发布:淘宝客链接转换软件 编辑:程序博客网 时间:2024/05/22 08:07
#include<stdio.h>
int main()
{
int*ptr; // 声明一个int指针
int val =1; // 声明一个int值
ptr =&val; // 为指针分配一个int值的引用
int deref =*ptr; // 对指针进行取值,打印存储在指针地址中的内容
printf("deref地址=%ld,值=%d\n",ptr, deref);
}
第2行,我们通过*操作符声明了一个int指针。接着我们声明了一个int变量并赋值为1。然后我们用int变量的地址初始化我们的int指针。接下来对int指针取值,用变量的内存地址初始化int指针。最终,我们打印输出变量值,内容为1。
第6行的&val是一个引用。在val变量声明并初始化内存之后,通过在变量名之前使用地址操作符&我们可以直接引用变量的内存地址。
第8行,我们再一次使用*操作符来对该指针取值,可直接获得指针指向的内存地址中的数据。由于指针声明的类型是int,所以取到的值是指针指向的内存地址存储的int值。
#include<stdio.h>
struct person {
int age;
char *name;
};
int main()
{
struct person first;
struct person *ptr;
first.age = 21;
char *fullname = "full name";
first.name = fullname;
ptr = &first;
printf("age=%d, name=%s\n",first.age, ptr->name);
}
第1至6行声明了一个person结构体,一个变量指向了一个person结构体和指向person结构体的指针。第8行为age成员赋了一个int值。第9至10行我们声明了一个char指针并赋值给一个char数组并赋值给结构体name成员。第11行我们把一个person结构体引用赋值给结构体变量。
#include<stdio.h>
#include<conio.h>
#include <string.h>
#include<stdlib.h>
#define N 3 /*N为人数*/
typedef struct node
{
char name[20];
struct node *link;
}stud;
stud * creat(int n)/*建立单链表的函数,形参n为人数*/
{
stud *p,*h,*s; /* *h保存表头结点的指针,*p指向当前结点的前一个结点,*s指向当前结点*/
int i; /*计数器*/
if((h=(stud *)malloc(sizeof(stud)))==NULL)/*分配空间并检测*/
{
printf("不能分配内存空间!");
exit(0);
}
h->name[0]='\0'; /*把表头结点的数据域置空*/
h->link=NULL; /*把表头结点的链域置空*/
p=h; /*p指向表头结点*/
for(i=0;i<N;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)/*分配新存储空间并检测*/
{
printf("不能分配内存空间!");
exit(0);
}
p->link=s; /*把s的地址赋给p所指向的结点的链域,这样就把p和s所指向的结点连接起来了*/
printf("请输入第%d个人的姓名",i+1);
scanf("%s",s->name); /*在当前结点s的数据域中存储姓名*/
s->link=NULL;
p=s; //要把s的数据保存到p中,要不下次循环s就又指向一个空的新地址了。
}
return(h);
}
int main()
{
int number; /*保存人数的变量*/
stud *head; /*head是保存单链表的表头结点地址的指针*/
number=N;
head=creat(number); /*把所新建的单链表表头地址赋给head*/
}
体会:
你要去某个人的家里,比如张三。你需要知道他家的地址,门牌号。
变量,就相当于张三
指针,就相当于地址,门牌号
比如int a=3,
内存中分配一块空间来存储3,
3是数据,定义指针*p=&a,
内存也分配一块空间,
并且把3所在空间的地址赋给p,
这样p中就指向3所在空间,*p的值就是3。
a和p是分配空间的名字。
这样有个标签就更加方便明确、同时这也是非常重要的。
比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。
还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,这样大大提高了效率。
- C语言第三次课
- 2017.12.6 C语言第三次课
- c语言作业第三次
- C语言第三次作业
- c语言学习 第三次
- c语言第三次练习题
- 第三次C语言上机指导
- C语言第三次课堂作业
- C语言第三次上机实验
- 第三次c语言上机操作
- c语言第三次上机报告
- c语言第三次上机报告
- 第三次C语言上机实验
- C语言第三次作业练习
- 第三次C语言上机实验报告
- 第三次c程序作业
- 第三次C语言程序设计作业
- C#--第三次试验
- android-小细节
- javascript基础十一(正则表达式)
- VM扩展名类型
- 得到屏幕的宽和高,然后在代码里面设置控件的宽和高,加载gif图片
- 八数码(康托展开)
- C语言第三次课
- 窗口类、窗口类对象与窗口 三者之间关系
- win7 vs2012 编译boost 1.53
- maven插件入门学习中碰到的问题解决
- windows下安装redis
- 读nandflash详解
- centos7安装mysql5.x
- 用MediaRecoder类进行录制视频
- as下git 操作