免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xuxd32
打印 上一主题 下一主题

[C] 数组为int a[5]={1,2,3,4,5}则int *ptr=a与*ptr=&a的区别如何分析 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-11-15 21:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
22 [报告]
发表于 2011-11-16 13:17 |只看该作者
在二楼不是挺明白吗?
int main()
{
        int a[2][3] = {{1, 2, 3},{4, 5}};

        int* p = *(a + 1);
        cout << *(p - 1);
}

论坛徽章:
0
23 [报告]
发表于 2011-11-16 17:11 |只看该作者
原讯IDC:刚刚推出促销活动,机会难得,重点促销台湾香港现机,品质测试满意再租用,保证真正国际机房, 1、台湾香港品质顶级机房,机房线路配齐 2、国际光纤带宽保证,处理问题及时 3、24小时两岸技术维护 专业供:台湾香港服务器出租和托管        台湾VPS出租        ---不需备案,不限流量,用途不限提供免费测试、
---咨询测试订购请联系QQ小唐:1731178188  464863718

论坛徽章:
0
24 [报告]
发表于 2011-11-16 18:14 |只看该作者
本帖最后由 keytounix 于 2011-11-18 09:21 编辑

int a[5]={1,2,3,4,5};
int *p=(int *)(&a+1);
这个意思是
p=(int *)(&a )+(int *)(1*sizeof(typeof(a)));

------------------------------
为什么是+1*sizeof(typeof(a))?懂不?
------------------------------

那么p指向的就是a[4]后面那一个空间了,而且是p 是 int *型
*(p-1)就是a[4]了

*(a+1) 就是a[1]

论坛徽章:
0
25 [报告]
发表于 2011-11-16 22:44 |只看该作者
c语言指针 我头疼 但是又不得不看
&a是内存地址

*p=&a就是指向地址的内容

我还是回去看看c语言入门经典 ⊙﹏⊙b汗 好长时间没开了

论坛徽章:
0
26 [报告]
发表于 2011-11-17 10:30 |只看该作者
a+1,则偏移一个int位置, &a+1则偏移整个数组大小的位置.

    int a[5]={1,2,3,4,5};
    int *ptr =(int *)(&a+1);         //这里ptr 指向了a[5],也即数组a的最后一个元素的后一个位置.
    printf("%d,%d\n",*(a+1),*(ptr-1))  //这里因ptr是int*指针,因此 (ptr-1)向前回退一个int位置,因此指向了a[4],

论坛徽章:
0
27 [报告]
发表于 2011-11-17 11:17 |只看该作者
a的值 == &a的值,他们都表示一个地址。
但是请注意区分他们的类型。


&a + 1,向后偏了sizeof (a)那么 ...
ljpdxj 发表于 2011-11-13 20:57



    严重同意,实际上你把int a[5]换成char a[5]应该就能看出效果来

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
28 [报告]
发表于 2011-11-17 11:20 |只看该作者
首地址 这个概念本身就是误导
pmerofc 发表于 2011-11-13 17:55



    pmerofc你太幼稚了,难道你真的以为C版里有初学者?

  我告诉你,这个版块里,不管新手老手,绝大部分ID都是我的马甲,你不信的话,我在下一楼换个ID,然后回复同样的话给你

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
29 [报告]
发表于 2011-11-17 11:34 |只看该作者
pmerofc你太幼稚了,难道你真的以为C版里有初学者?

  我告诉你,这个版块里,不管新手老手,绝大部分ID都是我的马甲,你不信的话,我在下一楼换个ID,然后回复同样的话给你

论坛徽章:
0
30 [报告]
发表于 2011-11-17 11:36 |只看该作者
pmerofc你太幼稚了,难道你真的以为C版里有初学者?

  我告诉你,这个版块里,不管新手老手,绝大部分ID都是我的马甲,你不信的话,我在下一楼换个ID,然后回复同样的话给你
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP