免费注册 查看新帖 |

Chinaunix

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

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

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

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
12 [报告]
发表于 2011-11-14 04:37 |只看该作者
本帖最后由 yinyuemi 于 2011-11-14 04:40 编辑

回复 1# xuxd32


    如理解有误,请楼下纠正,
  1.     int a[5]={1,2,3,4,5};
  2.     int *p1 =(int *)(&a+1);  //&a表示整个数组的地址,
  3.     int *p2,*p3;
  4.     p2 =(a+5);   // a作为指针使用时,指向数组的首个值,这里p2实际上和p1指向同一个位置(数组a的下一个位置),所以p1也可以写成:p1=&a[4]+1
  5.     p3 =(a-1);   // p3指向数组a的前一个位置
  6.     printf("p1: %d,p2: %d\n",p1,p2);
  7.     printf("%d,%d,%d\n",*(p1-1),*(p2-1),*(p3+1));
  8.     return 0;
复制代码

论坛徽章:
0
13 [报告]
发表于 2011-11-14 09:49 |只看该作者
没这么用过,直接ptr=a就行了,*ptr=&a,那不成了 **ptr=a,类似于argv

论坛徽章:
0
14 [报告]
发表于 2011-11-14 16:24 |只看该作者
哇,这个我今天也看的~~一个是数组的首元素的地址,另一个才是数组的地址,
int * p;
int a [5]={0 ,1, 2};
int (*pt)[5];

p=a;指向数组第一个元素
pt = &a;指向数组的首地址
好喜儿 发表于 2011-11-13 21:34



    为啥老爱给数组名取址

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
15 [报告]
发表于 2011-11-14 18:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

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

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
17 [报告]
发表于 2011-11-14 20:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2011-11-15 08:10 |只看该作者
#include <stdio.h>
#include <stdlib.h>
int main(void){
    int a[5]={1,2,3,4,5};
    int *ptr =(int *)(&a+1);
    printf("%d,%d\n",*(a+1),*(ptr-1))
    return 0;  
}

&a + 1是整形数组的下一个数组的首地址,即a + 5;则*(ptr-1)就是a[4]

论坛徽章:
0
19 [报告]
发表于 2011-11-15 11:42 |只看该作者
回复 14# KanonInD


    a表示的是a[0]的地址,而&a表示的是整个数组的首地址。它们在数值上是相等的。但是含义不同,或者说它们的类型不同。a的类型为:int *,而&a的类型为:int (*)[5]。
所以:a + 1 和 &a + 1 表示的地址并不相同。(个人理解,仅供参考!)

论坛徽章:
1
NBA常规赛纪念章
日期:2015-05-04 22:32:03
20 [报告]
发表于 2011-11-15 13:34 |只看该作者
c版多孔乙己
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP