| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1058 人关注过本帖
标题:指针类型匹配问题
只看楼主 加入收藏
ldliming
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-12
收藏
 问题点数:0 回复次数:15 
指针类型匹配问题
大家请看下面这个函数:
main()
{
int arr_add(int arr[],int n);
static int a[3][4]={1,2,3,4,5,3,45,55,6,33,62,88};
int *p,total;
p=a[0]; //如果此处改为p=&a[0][0]或者p=a这个函数的结果都是一样,但是其实质内容一样吗?还望高手指点迷津。谢!
total=arr_add(p,12);
printf("total=%d\n",total);
}
arr_add(int arr[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
sum=sum+arr[i];
return (sum);
}
搜索更多相关主题的帖子: 指针 类型 arr int sum 
2006-08-16 21:54
wuyufenjr
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-20
收藏
得分:0 

实质不一样的!书上讲得很清楚啦!p=&a[0][0]是把a[0][0]的地址赋值给指针变量p,而p=a是把二维数组的首地址赋值给指针变量p;p=a[0]是相当于把这个二维数组的第一行地址赋值给指针变量p;多维数组可以看成了由多个一维数组组成的。

2006-08-16 22:00
wuyufenjr
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-7-20
收藏
得分:0 

我是这么理解的!不知道是否对!请各位大虾指点!

2006-08-16 22:00
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

您这样操作二维数组,也没什么错的,只不过一般不这样操作。
数组在内存中都是以一维的形式来存储的。所以您这样没错。
改为&a[0][0]是没错的,改为p=a就犯了指针类型不一致了,您在定义的时候把p定义成了一级指针。
而a是二维数组名,可看作是二级指针,所以如果编译通过,结果也没错,则是编译器自动把类型强制转换了,也就是p=a,实际上就是p=(int *)a。


对不礼貌的女生收钱......
2006-08-16 22:06
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

p=a 类型不匹配,应该不能通过编译,如果可以的话告诉我你用什么编译器。
p=&a[0][0];可以,实质一样的,&a[0][0]是元素的地址,a[0]是行首地址,他们的地址和指针P的步长一样的。

2006-08-16 22:18
ldliming
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-12
收藏
得分:0 
   版主:您说一般不这样操作二维数组,那怎么操作?给我举个例子好吗?谢谢!还有,那个a不是代表行地址a[0]不是代表首地址(或者说列地址)吗?这样说对吗?
2006-08-16 22:18
ldliming
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-12
收藏
得分:0 
  回答5楼的大哥,我用的是TC 2.0,可以通过编译阿,结果也完全一样啊。我对天发誓,绝对是实话!呵呵。
2006-08-16 22:20
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
int array[3][4];
int add(int (*p)[4],int n)
{
for(;;)
for()
sum+=p[i][j];
return sum;
}

对不礼貌的女生收钱......
2006-08-16 22:22
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

至于您那个说法,很模糊,我看不懂您的意思,明天再说吧,我下了。


对不礼貌的女生收钱......
2006-08-16 22:23
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

TO楼主,我不是大哥,也是初学者,建议你看看我发的一张“玩转指针”帖子,自己编译一下就知道了。

2006-08-16 22:32
快速回复:指针类型匹配问题
数据加载中...
 
   



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

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