C语言里面指针,*p=&a和p=&a,有什么区别
如果a都是基础类型, 而不是指针, 比如a为int
那么 p=&a, 是把a的地址,赋值给p, p需要是int *类型。
而*p=&a 是把a的地址赋值给*p, p需要是int **类型。
注意 如果是int *p=&a;这种形式
是定义int *类型的p, 并给p初始化为&a。 等效于
int *p;
p=&a;
还是给p赋值,而不是给*p赋值。
指针类型
基本类型指针
数组指针
指针,数组指针
数组指针:为指向数组的指针。
例如:
int a[5],*p1; char c[6]="hello", *p2;
p1=a;p2=c;
结构体指针
结构体,结构体指针
在计算机系统中每一个数据均需要占用一定的内存空间,而每段空间均有唯一的地址与之对应,因此在计算机系统中任意数据均有确定的地址与之对应。C语言中,为了描述数据存放的地址信息,引入指针变量。本节将描述结构体类型指针变量。
void指针
指针,void型指针变量
指针变量也可以定义为void型。例如:void p;
这里p仍然是一个指针变量,有自己的内存空间,占用4个字节(VC++环境)。但是不指定p指向哪种类型的变量。
注意:在这种情况下,如果对指针变量进行加法或减法就会导致编译错误,
指针类型指针
指针,指针的指针
指针的指针(多重指针):指向指针的指针,用于存放某个指针变量的地址。形式如 int **p; 等效于 int *(*p);
*p等于p间接指向的对象的地址。
函数指针
指针,函数指针
函数指针:可以用指针变量指向一个函数。一个函数在编译时被分配给一个“入口地址”。
例如:
有函数fun(a,b)
若令p=fun; 则有(*p)(a,b)?相当于? fun(a,b);
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!