| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 946 人关注过本帖
标题:=数组和指针的问题
取消只看楼主 加入收藏
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:7 
=数组和指针的问题
int *p[]={1,3,5,7,9};是错误的说明语句,为什么是错的?
int a[5];*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};是正确的说明语句,为什么是对的?
int *p[5]和int (*p)[5]有什么不同?
int b[4][6],*p[6];为什么p=b;是正确的赋值语句 而把b[4][6]改成b[4][5]就不是正确的赋值语句了呢?
请教!
搜索更多相关主题的帖子: 指针 
2009-07-27 12:23
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
完全被弄糊涂了 请知道的指点迷津.......
2009-07-27 12:24
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
写错了 第二行a[5]后面是,不是;
2009-07-27 12:37
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
main()
{
 int a[3]={1,2,3};
 int (*p)[3]=&a;
 int i;

  for(i=0;i<3;i++)
 printf("%2d",*p++);
 printf("\n");


}那按找我的想法 这个题目输出的应该是1 2 3啊 但不是的 哪错了呢?
2009-07-27 15:32
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
*p+i 相当于a[i]在二维数组中 它是第i行 代表第i行的起始地址 就是说它是一个地址
*(*p+i)就是取其值 可以理解
但我定义的是一维数组啊~
但是结果确实是 1 2 3 还是有点转不过来 再指点下 谢谢....
2009-07-27 16:18
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
好 有点明白了 还需要揣摩揣摩 不是一两下能想透的事   谢谢你!
2009-07-27 16:43
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
那int (*p)[3]=&a;和int (*p)[3]=a; 有什么区别?
问题不弄清楚睡不着觉啊,请指教。。。。。
2009-07-27 16:50
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
哦,我看了下书,可以这样理解?
(*p)[3]是一个可以指向包含3个元素的数组的指针
p指的对象是整个数组   而不具体指向数组里的某个内容
假设指向一维数组而且定义p=a ;a是一个一维数组的名称,也就是首地址 代表&a[0] 而p是指向一个数组  并不具体到某个值某个位置。
所以不兼容。
如果是二维数组
p=a ; 此时a并不代表首地址 而是代表a[0]这一行 它包含3个元素a[0][0],a[0][1],a[0][2];
刚好和p对应 所以正确
假设p=a+1就代表p指向a[1]这一行的3个元素
我理解的是对的?
2009-07-28 08:29
快速回复:=数组和指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035565 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved