C一个指针的小问题
发布网友
发布时间:2024-02-05 14:52
我来回答
共4个回答
热心网友
时间:2024-03-09 06:17
其实指针不难,关键是理解
指针基本上就是两个应用方式
int a=1,*p;
p=&a;
把a的地址赋值给p
int a=1;
int *p=&a;
和上面一个结果,只是把两句复合到一起,声明p的时候就赋值
运用的时候,加上*星号表示指向的地址中的数据;不加*星号表示指向的地址
如上面应用的时候
*p表示p指向的地址中的数据,就是1。
p表示一个地址,也就是a的变量的地址
运算
指针是一个变量,可以加减运算
加,一个地址加减上一个数,表示这个地址附近的地址
如p+3,表示p后面的第3个地址,p-3一样
int *p,*q; p-q表示p和q之间隔着几个地址空间
乘除无意义
理解
指针相当于一个门牌号,如你住多少号楼,你说多少号楼,大家就知道了。
两层指针,如a[5][6]相当于几号楼几单元
三层指针,如a[5][6][2]相当于几号楼几单元
等等
多层指针难理解一点,不过这样一比喻你应该更好的能理解
如两层指针,最外层是楼号,里面一层是单元号(这里假设单元是最底层)
说的第一层还是指针,理解是一个楼有好几个单元,
你指每幢楼的时候,他包含几个单元,
热心网友
时间:2024-03-09 06:18
p是一个指向int型变量的指针,就是说他存的是一个int型变量的地址,因此如果给p赋值肯定是给p赋一个地址,因此既p=&i将i的地址复制给p;
*p表示对p进行解引用,因为p存储的是一个地址,*p就是获得p中存储的地址处代表的变量,这里也就是*p等于i,给*p赋值11,也就等于i=11;
热心网友
时间:2024-03-09 06:13
p=&i,&就是取地址符,这时候p就是一个指针了,*p表示一个指向指针的指针,即用11替换了这个地址内的值,而这个地址存的就是i的值,所以之后i的值也就变了。
热心网友
时间:2024-03-09 06:14
p是一个指针【变量】,它保存一个int型数据的地址。
p=&i; 也就是p的值是变量i的地址,你可以用十六进制直接把p输出来试试。
*p 实际等价于变量 i