*P=&a[0] 和P=&a[0]有什么区别

[复制链接]
查看11 | 回复2 | 2017-10-29 19:41:29 | 显示全部楼层 |阅读模式
举个例子吧:a是一个数组,它在内存中的初始地址比如说是0x11111111(简单假设),且a[0]的值是1,也就是说,内存0x11111111中存储的值是1。于是,&a[0]=0x11111111,a[0]=1。int *p; p=&a[0];指针p会有一个自己的内存地址,通常占用4个字节(比如初始地址是0x22222222)。p的值是&a[0],也就是说从0x22222222开始,后面4个字节中存储的值是0x11111111。*p的值就等于p所指向的内存地址中存储的值,也就是a[0]。所以*p等于1。如果*p=&a[0]的话,很容易出问题。比如说int *p之后,p的初始值可...
回复

使用道具 举报

千问 | 2017-10-29 19:41:29 | 显示全部楼层
*p=a[0] //将 a[0]的值赋给到p所指向的位置。p=&a[0] //将 a[0]的地址赋给p则,如果:int a[10];int *p;*p=a[0]; //1p=&a[0]; //22句恒正确,1句则有可能引发内存非法访问错误。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行