mtwm.net
当前位置:首页 >> 执行 stAtiC int B[5], A[ ][3] ={1,2,3,4,5,6}; ... >>

执行 stAtiC int B[5], A[ ][3] ={1,2,3,4,5,6}; ...

这条语句声明了两个静态变量a、b,b是5个整形元素构成是数组。a是有3列的二维数组(名义上的二维数组)。 首先说一下静态变量,使用static声明的变量为静态变量,这些变量存储在程序的bss段,而bss段在程序执行时会被初始化为0。所以说,b[4] = ...

由于C语言中数组是按行排列的,所以a[2][-2] = a[2][0] 向前移动两个数,也就是a[1][2] = 6 a[1][3]从变量watch窗口中可以看出直接是0.所以结果是6 附内存布局图:

*ptr=a[0][0]=1 *(ptr+2)=a[0][2]=3; *(ptr+4)=a[1][1]=5 最后结果是15,不是24。我已经跑过一遍,不会错的。 ptr是整个数组的首地址,那么*ptr=a[0][0]是无可争议滴!,接着ptr+2,很明显是a[0][2]的地址,因为二维数组在存储的时候是线性存储的...

是的,没初始化到的默认为0

a[1][2]值为6 不存在a[2][3],因为定义Static int a[3][3]下标范围是a[0][0]到a[2][2]。 按你的初始值对应的是: a[0][0]=1; a[0][1]=2; a[0][2]=3; a[1][0]=4; a[1][1]=5; a[1][2]=6; a[2][0]=7; a[2][1]=8; a[2][2]=9;

什么问题?

结果是4 首先是static,静态变量,当你不赋初值时,系统自动赋为0 然后,a[8]的数组的第一个元素是用a[0]表示,当你用static int a[8]={1,2,3,4,5,6}意思是说,a[0]=1,a[1]=2……,a[6]=0,a[7]=0……(6以后你没赋初值,所以系统自动给它赋0) 所以...

p是一个一维指针,指向a[0]后(即a数组的第一行{1,2,3}),p就相当于一个一维数组,所以,p[1]就是p数组中第二个元素,所以,没有什么不对。

static变量默认自动初始化为0,所以a数组中的初始化器未指定的元素会全部赋0值,因此: a[2]~a[5]: 4,7,0,0

你好: 答案选A 17。 因为在for循环中,k为0、2、4、6、8,而*(a+k)是在数组a内按地址取第k个元素,和变量s进行累加,k=0、2、4、6时,a相应的数组值为5、7、1、4,而在k=8时,超出了数组的边界,所以为0. 所以s相加起来为17. 希望我的回答能帮...

网站首页 | 网站地图
All rights reserved Powered by www.mtwm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com