请问*(*(a+i))与*(a+i)的区别是什么 *(a+i)不是地址里面的值吗?那么*(*(a+i))又是啥 来自于:
#include<stdio.h>
#define N 4
void max(int (*p)[N],int m)
{
int i,j,v,sum=0;
for(i=0;i<m;i++)
{
v=*(*(p+i)); /*********( 这里为什么要加多个*号?????*(p+i)不行吗?不能表示首元素吗 )*********/
for(j=0;j<N;j++)
{
if(*(*(p+i)+j)>v)
{
v=*(*(p+i)+j);
}
}
printf("第%d行的最大值为:%d\n",i,v);
sum+=v;
}
printf("最大值之和为:%d\n",sum);
}
main()
{
int a[3][N];
int i,j;
int (*p)[N];
p=&a[0];
printf("please input a array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
max(p,3);
}
*(*(a+i))与*(a+i)
int (*p)[n]是一个数组指针,可以当成一个二维数组看待。*(p+i)代表的是第i行的首地址,是整行元素,*(*(p+i))代表的是第i行第一个元素的地址,同理*(*(p+i)+j)代表的是第i行第j列的地址。本人也是新手,回答的不对的地方还请多多包容。。。
*(a+i)与a[i]与(a+i)是一样的地址,为什么?
呵呵,你错了,对于数组a[i],a表示该数组的起始地址,即a=&a[0], 所以 *(a+i)表示a+i指向的数组元素,*(a+i)=a[i]。对于二维数组,&a[0][0]就不能用a表示了,而是用a[0]+0表示,二维数组可以看成一维数组,不过它的每一个数组元素又是一个一维数组,比如a[3][4]的第一行...
二维数组中*(a+i)是什么意思
在C语言中规定,数组名代表的是数组首元素地址。a是二维数组的数组名,因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。
...j]的引用:*(*(a+i)+j)为什么也正确呢,*(a+i)等价于a[i]么?_百度...
首先a是二维数组的首地址,也是二维数组第一行的首地址,是个常量指针,a[i]也是地址,表示第 i 行的地址,a+i表示相对于地址a偏移 i 个单位的地址,与a[i]等同,(a + i)表示对 相对于地址a偏移 i 个单位的地址 取内容,即表示对a[i] 的地址 再取内容,因为a[i] 与&a[i]等同...
二维数组中,a+i表示第i行的地址,那为什么*(a+i)也表示第i行的地址。
a+i和*(a+i)的值相同没错,但它们的类型不一样,代表的意义也不一样。a+i还是2维指针,*(a+i)则是一维指针。编译器对它们的解析和操作是不一样的。
...吗,书上说a+i是a[i]的指针,既然这样,那么*(a+i)为什么还是
a+i其实就是&a[i],肯定是地址 (a+i)其实就是a[i],如果a是二给数组的数组名,a[i]就肯定是地址(等同于&a[i][0]),如果a只是一维数组(指针数组除外)的数组名,a[i]就不是地址(原因是:二维数组可以看作是多个一维数组组成,即数组的数组)(a+i)+j就是&a[i][j],如果数组a是二维...
C语言中的二维数组里a+1和*(a+1)为什么都是地址
a+bai1应该是 (a+0)+1 这里的a是二维数组中的二级指针 数组名为a[0]的一维数组(表示行)也是数组名为a的一维数组(表示列)后面的1表示行数组移动1行 0表示列的移动 所以是1行0列的地址 (a+1)中a是二级指针 取值二级指针是一级指针 一级指针指向的一维数组(二维数组中的行)一维数组...
c语言二维数组与指针,我想知道为什么*(a+1).与显示中的a+1,所给出的...
二维数组是两层指针,这个你该明白 (*(a+i)+j)这个是表示i行的第j个数据,注意啊,是两个 要是不理解,记住套用即可 一个*是指针 所以ij都是指针 a+1是一个指针,表示第1行的首地址(c中数组时从0开始计数的)在二维数组中,a,a[0],&a[0][0]这三个指针虽然都是a的首地址的值,...
一个简单的C语言问题,scanf("%c",a+i)与scanf("%s",a+i)的区别
scanf("%s",a+i) 这种格式,读入字符串,它以空白为分隔 符。输入缓冲区 有 a白b白c白d回车时, 它读入的 4 个 字符串 是 "a" "b" "c" "d",依次 存放地点 是 a[i], 即a[0],a[1],a[2],a[3].双引号括起的叫字符串,例如 "a", 它实际上 含2个字符,一个是 a, ...
*(a+i)与a[i]是一样的地址,为什么?
也就是说*(a+i)指向的值的地址,与a[i]指向的值的地址都是一样的。也就是说他们得到的值是一样的。这里不是说他们得到的是一个内存变量的地址还是内存变量的值,只是说明他们是一样的,得到的值一样,换句话说就是一样的地址。(一样的地址难道值会布一样??)...