C语言二维数元素 *a[2]是什么

作者&投稿:山子 (若有异议请与网页底部的电邮联系)
关于C语言2维数组的问题~

是正确的。x[i]的值与x[i][0]的地址值是相同的,也就是说x[i]等同于&x[i][0]。
但严格上讲这是不同的两个东西,只是两种的值相同而已。x[i]是一个一维数组。类似于说
int s[2], *p=s;
中p和s是两个不同的东西,而且类似的p的值、s的地址值都和&s[0]相同。p=s与p=&s[0]没有两样。

#include
#include


int main()
{float score[5][5];
int i,j;
for(i=0;i<5;i++)
{printf("输入第%d参赛者的成绩:
",i+1);
score[i][4]=0.0;
for(j=0;j<4;j++)
{printf("输入第%d项目成绩:
",j+1);
scanf("%f",&score[i][j]);
score[i][4]+=score[i][j];
}
}
for(i=0;i<5;i++)
{
printf("第%d参赛者总分为%f
",i+1,score[i][4]);
}

system("pause");
return 0;
}

表示数组a是一个指针类型的数组,*a[2]具体表示什么要看定义*a[]前面的类型如int *a[10]表示*a[2]就是一个整型的数


北关区19672012187: &a[2]在c语言什么意思 -
狂斌艾辛: a[2] = *(a+2);a其实是地址值,是数组首个元素的地址 这也就解释了为什么 a[0] 为什么是第一个元素 ,因为*(a+0)=*a 那么&a[2]= &*(a+2);//&和*抵消=a+2; 即第一个地址 在往后面数两个地址,即数组第三个元素的地址值

北关区19672012187: c语言中int a[2] []与inta [][2]的区别 -
狂斌艾辛: int a[2]表示数组a有两个元素,并且都是整数.inta [][2]应该是写错了,如果是int a[][2]的话,表示二维数组,每一维元素个数为2,并且元素是整数.

北关区19672012187: c语言中二维数组 **(a+2)与*(*a+2)的区别 -
狂斌艾辛: 比如a[3][4],**(a+2)相当于a[2][0],*(*a+2)则对应a[0][2].

北关区19672012187: c语言输出函数中为什么a[2]表示一个元素 -
狂斌艾辛: 如果 a 是一维数组,则语句和表达式中的 a[2] 表示数组的一个元素.数组的下标从0起算,a[2] 则是 第三个元素.a[2] 也可以表示成指针指向的值的形式 *(a+2).例如:int a[]={1,2,3,4,5}; printf("%d %d\n", a[2], *(a+2)); 输出 3 3

北关区19672012187: c语言二维数组 -
狂斌艾辛: auto int a[8][8]; 那么a[2]就相当于一个一维数组名,那么a[2]的数值等于&a[2][0]是没什么疑问的 数组名本身代表数组的首地址,那&a[2]是怎么回事呢,早期的c编译器会认为这是非法的,但是从语义上讲,对一个数组对象取地址没什么不合理的,于是C99开始允许对数组名取地址,相当于把该数组维数提升了1级,在这个例子里a[2]的类型是int*, &a[2]的类型是int(*)[8];,就是说a[2]和&a[2]数值上是相同的,但含义不同,&a[2]的类型和a相同的(提升了一级)

北关区19672012187: int a[2][2]={1,2,3,4};哪么*a代表什么意思? -
狂斌艾辛: 这涉及到二维指针的概念.由于a是一个二数组,所以它是一个二维指针,此时,*a相当于a的低一维的数组名,这里*a即是二维数组第一行{1,2}的数组名,严格来讲,它不表示某...

北关区19672012187: C中2维数组 *(a+1) 代表什么 -
狂斌艾辛: 数组名a表示数组a的首地址, 是a[]的首地址, 同时也是a[][]的首地址. *(a+1)是把a看作是一维的数组, 它其中每个元素也是一个一维数组. 所以*(a+1)就是这个总的一维数组的第二个元素, 也就是二维数组的第二行. 而*(a+1)本身又是一个数组, 它指向这个数组的首地址. 综上所述, *(a+1)是这个二维数组的第1行的第0个元素.

北关区19672012187: c语言判断有二维数组a[3][4] , *(*(a+2)+3)代表数组元素a[2][3]的值. -
狂斌艾辛: *(a+2)意思是第三行元素的首地址即a[2][0]的地址,*(*(a+2)+3)意思是第三行元素首地址加3再取值,第三行元素首地址加3就是第三行第四个元素的地址,在取值就是a[2][3]的值了.

北关区19672012187: C语言:二维数组int a[2][3],请给出*(a)+2的等价形式 -
狂斌艾辛: a是数组首地址*a就是a[0] 所以 *a+2就是a[0][2]的地址.可以写作 a[0]+2 或者 &a[0][2]

北关区19672012187: C语言二位数组a[1]表示什么 -
狂斌艾辛: 二维数组形式:定义一个二维数组如 char a[x][y]; 表示a数组一共有x行,每一行有y列,此时如果这样写a[n],表示取这个数组的第n行的首地址.例如 有如下定义:char a[3][20] = {"hello", "world", "you"}; 表示a[3][20]数组一共是3行,每行占用20列;并且a[0],表示指向"hello"的首地址a[1],指向"world"的首地址,a[2]指向"world"的首地址;而puts()函数只要传入给它一个首地址,它就可以输出从字符串开始的字符串直到遇到结束符为止;因此这里puts(a[1]);会输出"world"

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网