5 回答
TA贡献1条经验 获得超0个赞
申请的一个字符内存单元,char p = 8,人通过p(假设)认识,计算机通过0x0002(假设)标识,&p 获取0x0002
char *pt (4个字节) pt = &p ------> 即将0x0002 复制给pt ,通过*pt 访问p的值8。所以指针pt的值是一个计算机能标识的十六进制的数,整型p存放的是数据8。
以上是我对指针的理解,不知道对你有没有帮助。
TA贡献1条经验 获得超0个赞
chra *name理解为从内存中申请一段空间,chra *name[]就是数组中的每个元素都是一段空间,
p=name ,理解为p指向name数组元素,就是第一段空间(看做整体),p++为第二个数组元素(第二段空间)
*p指向数组中的第一个元素(第一段空间的整体),也就是basic ;
而**p是指向第一个元素的指针(指向第一段空间中的元素)就是b,*(++*p)输出为a
用第二个问题更好理解,p=a,p指向a的整体就是basic,**p就是指向a中的第一个元素,就是b
TA贡献1条经验 获得超0个赞
我的理解是这样的。。。上面的 *p = *name = name[0]-->"basic" ,如果当二维数组看待的话展开成name[3][8]的数组。 p = name = &name[0] 指向第一行“basic”的首地址, *p = *(&name[0])=name[0];
**p =**name = **(&name[0])=*(name[0]) = *(&name[0][0]) = name[0][0] = b.
下面的其实也同理 *p = *a = &a = b , **p = *(&a) = &b =0xfffffff....-->b的地址
指针我也是半桶水。。。不知解释合不合理。
- 5 回答
- 0 关注
- 1628 浏览
添加回答
举报