1楼:倒霉孩子改名啦
*(a+1)相当于a[0][1],
*(a+5)相当于a[0][5]已经越界了
c语言 二维数组 (*(a+1)[1]) 和 *(a+5)分别表达什么?
2楼:匿名用户
*(a+1)=a[1]
那么*(a+1)[1] = a[1][1]
*(a+5) = a[5]
c语言定义了一个二维数组a[5][3], 用循环实现a[0][0]+a[1][0]+a[2][0]+~~~a[5][0] ?如何实现??
3楼:匿名用户
可以啊,for(j=0;j<3;j++) for(i=0;i<5;i++) n=n+a[i][j];每一列的就有了,2个for语句的位置换一下就可以在行和列之间转换了!!!
4楼:匿名用户
哥们,a[5][0]数组越界了啊!最多能得到a[4][0]实现a[0][0]+a[1][0]+a[2][0]+~~~a[5][0]
float sum= 0;
for (int i=0; i<5;i++)sum += a[i][0];
cout<的也能实现
for ( j = 0; j< 3; j++)
5楼:匿名用户
//假设:int a[5][3];
//可以获得指定的列ncol的累加和
int getarraysum(int a[5][3], unsigned int ncol)
}return nresult;}
c语言中*(*a+1)什么意思 int a[3][4]={{1,3,5,7},{2,4,6,8}};*(*a+1)的值
6楼:
*(*a+1)==3。
7楼:逆战
*(*a+1)这种写法是错的,a是数组第一个元素的地址,*a=1,*(*a+1)=*2,这明显是错的。
在c语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?
8楼:匿名用户
c语言中long占4个字节,所以longa[3][5]占4*3*5=60个字节
从元素角度理解a代表a[0][0];从二维数组理解a代表a二维数组名,即二维数组首地址;从一维数组角度理解a代表a[0]即二维数组第一行看作一个一维数组,a[0]为这个一维数组的首地址;
a[1]从二维数组看代表a[1][0]是元素,从一维数组角度看代表二维数组第二行的首地址和上面a[0]一样,
9楼:九天张
二维数组在存储的时候,可以看做一维数组来对待。上面的数组可以看做以下的数组:
一维数组的第一个元素(由5个元素组成):a[0][0],a[0][1],a[0][2],a[0][3],a[0][4]
一维数组的第二个元素(由5个元素组成):a[1][0],a[1][1],a[1][2],a[1][3],a[1][4]
一维数组的第三个元素(由5个元素组成):a[2][0],a[2][1],a[2][2],a[2][3],a[2][4]
其中,a是一个地址,指向a[3][5]数组的第一个元素(即a[0][0]);而a[1]则表示将a[3][5]数组看做一维数组的第2个元素的地址,也就是a[1][0]的地址。
10楼:澶漫
占用的字节数 3*5*4=60
a为数组首地址 a=&a[0][0]
a[1]=a[1][0]
11楼:匿名用户
占3x5x4个字节,a代表这个数组的起始地址,a[1]表示第二行的起始地址。
c语言(a=3*5,a*4,a+5)什么意思?输出20
12楼:枭隐
首先括号里是逗号表达式,根据c中的规律,逗号表达式应该以最后一个表达式的值为最终输出值;其次我觉得楼主可能是觉得结果应该是65,其实中间的乘法运算只是调用a的值进行计算,而不是对其进行赋值,因此a的值仍以第一次赋值为准,为15…因此最后结果为20…希望我的回答对楼主有帮助…
13楼:匿名用户
(a=3*5,a*4,a+5)
逗号运算符
首先计算a=3*5=15,然后是15*4=60(a的值并不发生变化),最后是15+5=20
相当于(15,60,20)
取最后一个元素的值就为20
14楼:讲稿的
c 语言中,逗号(,)也可以是运算符,称为逗号运算符(***ma operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:
子表达式1, 子表达式2, ..., 子表达式n
例如:a + b, c = b, c++
逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有***都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
下面我们来看一些小例子:
var = 235,567;
乍一看您可能以为这个语句有语法问题,其实它是完全正确的!首先运算逗号左边的子表达式 var = 235,var 被赋值为 235;然后运算右边的子表达式,其值为 567,故而整个逗号表达式的值是 567。可别以为 var 得到的值是 235567 或者 567 哦!
如果写成:
var = (235,567);
则 var 得到的值是 567。
逗号也被用作分隔符(separator),例如:
int i_var1 = 1, i_var2 = 2, i_var3 = 3;
printf("%d %d %d\n", i_var1, i_var2, i_var3);
上例中的逗号是分隔符,而不是逗号运算符。
例题:fun(int x,int y)
main()
答案:8
15楼:匿名用户
a=15+5 = 20
c语言二维数组定义是什么,然后int a[1][2]是代表什么意思?怎么用这个二维数组
16楼:匿名用户
c语言二维数组定义的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2]
int a[1][2]的意思是,定义了一个int类型的,数组名为a的,具有1行2列的数组
你可以把这个二维数组想像成一个**,这个**有1行2列,每个格子中可以放入一个int型数据。
数组使用就是用数组下标来访问数组中的元素,比如a[0][1]=5,就是把第1行的第2个元素赋值为5。
c语言对于数组a[1,3,5,7]*p+1和*(p+1)的区别
17楼:
假设p = a;
则*p = a[ 0 ] = 1
*p + 1 = a[ 0 ] + 1 = 2;
p + 1 = &a[ 1 ] //这里的 p + 1 是指针p的指向往后挪了一位
因此 *(p + 1) = a[ 1 ] = 3
18楼:拜月
对于任意一个数组,
*p+1= *p指向的变量值 + 1
*(p + 1)= *p后移一次指向的新的变量值。
19楼:匿名用户
a[1,2,5,7]
p=a;
*p +1 ==> *p 即指针p的内容, 是1, 再=1, 结果是2
*(p+1) ==》指针p下移一个位置的内容, 即3
c语言中,定义了二维数组a[n][n],当调用函数fun(a)时,形参为什么不能是**a,只能是(*a)[n]或a[][n]?
20楼:加
int t[n]和int (*t)[n],表示的意义是一样的,都是说t是一个指针,
指向一个包含n个元素的整型数组。
现写一小程序,作用是按行输出二维数组的各个元素#include
#include
#define n 5 //列数
void printarray(int (*a)[n],int rows)//运行过后再改为int a[n]试下
printf("\n");//换到下一行 }}int main()
,,};
//int **b=a;这个赋值不行,因为a是int*[5] 类型//int (*b)[5]=a;这个可以运行通过printarray(a,3);
return 0;
}我用的编译器是c-free,希望这个解释对你有用。
21楼:墨派
你的fun(a)中a是什么数据类型?
无论哪种数据类型,**a这种数据类型不存在,你自然不能把它当作形参了!
22楼:神魔灵樂
**a 表示一个指向指针的指针标量a,后两种是函数传参的形式,是语言定义的规范。可直接将a定义为一个指针类型,直接传参 。如
typedef a[n][m] *p2_darray;
p2_darray;
fan(p2d);
23楼:帅7嘿嘿
a表示是数组a的首地址,(*a)[n]表示二维数组中的一维的首地址如:a[3][3]中a[3]表示a[3][0]
*a表示数组首地址,**a就不代表数组中的地址了。
c语言二维数组a,为什么a和(a+1)等
1楼 a 1 指针取得不就是地址吗 2楼 匿名用户 a 1 是定义的指针, 因为数组的起始地址a 0 可以用a来代替 所以a 1 和 a 1 是同一个地址 3楼 首先a代表整个数组的首地址没问题吧,a 1就是把地址下移, a 1 就是取其地址的内容。这回可以理解了吧! c语言中二维数组a i j 为...
c语言三维数组赋值给二维数组为什么可以这样
1楼 你的数组a其实仍然是二维数组,因为你给的值显然是一个二维数组的值即1 2 3 3 2 1 2 5 6 你并没有真正做一个三维数组,所以赋给二维数组完全没问题,数组b的值仍然是像上面那样的形式 c语言怎么为一个三维数组赋值?我的这个二维数组是字符串,要求用c语言,不是c 2楼 匿名用户 ch i...