关于C语言的指针

来源:互联网 发布:linux结束所有进程命令 编辑:程序博客网 时间:2024/05/13 15:25

其实从一开始接触C语言是在大二学C程序设计的时候,当时压根就没学明白C语言这东西,可能也是因为大学的学习没有认真琢磨。

后来在毕业后慢慢接触变成工作才开始对C语言有了一定的认识,其实C语言的灵魂就是在于指针和结构体类型的变量使用,然而刚

开始我也不是很理解指针这东西,学的蒙圈。后来接触了UNIX C系统编程后,才知道变量和类型两者间的关系,也就是一个变量访

问内存时是以什么方式去访问的。比如int num;那么变量num访问内存时是以int类型访问的,而int* p;那么变量p是以int*类型访问

内存的,也就是说变量p存放的是int*类型的。然而,在C中,指针即地址,地址即整数,而且是无符号整数,一般是4字节(32位机是

4字节,64位机上是8字节)。也即是说,不管是普通指针还是二级指针或更高级指针类型的变量,实质存放的都是一个地址,而对该

地址取*操作,则是对该地址存放变量的操作。如:

int num1=10;

int* p=&num1;//把变量num1的地址存放在指针变量p中

*p=100;//等价于num1=10;

int** dp=&p;//把变量p的地址存放在二级指针变量dp中

**p=110;//(可以写成*(*p)=110;)等价于*p=110;和num1=110;

此时再声明一个变量num2;

int num2;

*dp=&num2;//等价于p=&num2;

**dp=200;//等价于*p=200;和num2=200;

以此类推,更高级的其它类型指针也是如此。希望对你有帮助

原创粉丝点击