kwrl.net
当前位置:首页 >> C语言里面指针,*p=&A和p=&A,有什么区别 >>

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=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。 int a=2,*p; *p=&a; 打印*P应该是一个地址值,很长一串, p=&a; 打*P印结果会是2;

当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。

*是解引用运算符 &是取地址运算符 *p=&a这样写是不正确的(除非p是指向指针的指针),这时候*p前面要有类型符(比如int等),通常的情况是这样用的int *p=&a;这一句作用相当于int *p; p=&a; 两句,这句话的意思是定义一个int类型指针,然后用a的...

指针本质就是存储内存地址的一个变量。所以指针可以指向某个变量在内存中存储的单元格嘛。变量去访问单元格最后也是编译器通过变量名和地址一一对应去查找的。而指针里面直接存储的就是地址,所以直接可以访问地址所对应的单元格。 不知道楼主说...

->指针操作符的优先级非常高,于是*p->a就是*(p->a),取得指针p指向的结构体的成员a(也是指针)指向的第一个元素。p->a是取得p指向结构体的成员a,等价于(*p).a

a和p是变量,&a和*p是表达式,1和0x1000是常量 a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下) 在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没...

第一个是p指向的内存单元存上a的地址,第二句是p的值是a的地址

总得来说没区别,就是指针初始化的时间不同而已 int *p = &a;//这里p声明的时候直接初始化它的值为变量a的地址 int *p;//声明指针p,p的值不确定可能指向任何地址, p = &a;//显示初始化使p指向a的地址

这样问说明你对指针的概念还不清楚,以下两种方式等价: 一、先声明指针,再给指针赋值 int *p,a; p=&a; 二、定义指针的同时给它赋值 int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针

网站首页 | 网站地图
All rights reserved Powered by www.kwrl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com