1楼:v侧耳倾听
数组的下标是从0开始,由于数组是连续存储的,你可以想象用一个4x4的**来表达这个数组,然后把for循环体内语句中数组对应的下标值根据算术表达式进行计算就可以啦。
for(i=0;i<4;i++)s+=a[i][1];//等同于s=s+a[i][1];
由这个循环语句可知,将数组a[0][1],a[1][1],a[2][1],a[3][1]的值相加求和。即:
2+6+9+2 =19,其他的数组下标都可用这种方法来计算。
2楼:匿名用户
你打印出来,就清楚了啊
书上面都有吧
c语言二维数组下标的值怎么算 5
3楼:匿名用户
是按顺序初始化的
在你这个数组里面
就是a[4][4]=
1234
5678
39102
4296
累加a[i][1]就是第二列
2+6+9+2=19
c语言二维数组怎么算下标的值
4楼:匿名用户
是按顺序初始化的
在你这个数组里面
就是a[4][4]=
1234
5678
39102
4296
累加a[i][1]就是第二列
2+6+9+2=19
c语言二维数组下标负数是什么意思~? 5
5楼:一口没水的枯井
1 在c语言中,二维数组的下标可以为负数,表示指向前面的元素
2 对于二维数组 int arr[m][n]来说,arr[i][j]的地址是 (*arr)+i*n+j,其值是*((*arr)+i*n+j)
3 分析本题
数组a在初始化时后,其元素按照在内存中的排列顺序依次为1,2,3,0, 4,5,6,0, 0,0,0,0
数组a的第一个元素的地址为*a(或&a[0][0]或a[0]),记为p,
则,a[2][-2]的地址就是 p+2*4+(-2) 即p+6,即指向第7个元素,其值为6;
同理,a[1][3]的地址为p+1*4+3,即p+7,即指向第8个元素,其值为0
所以i的值为6
6楼:窗前过马
在这里这不是一个错误,但是一般不会写这样的程序。
首先应该理解语言中数组的存储结构。对二维数组,在内存中实际是按行存储的,也就是说二维数组中元素是按行依次存储在一片连续的的空间中。
取某个元素时,是先通过计算这个元素的地址,再通过计算得来的地址取得该元素的。依然以二维数组为例,设数组a[rows][cols](即有rows行,cols列),当访问a[i][j]的时候,是先通过i,j的值计算得到要取的元素的地址,再在这个地址上取得该值的。计算地址的方法是:
a + i*cols + j, 这里a就是数组名,它实际存放着上是这个数组的每一个元素的地址。
因此,对于您的问题, 可能计算得到a[2][-2]的元素地址为 a+2*4 + (-2) = a + 6 = a + 1*4 + 2
它的地址与元素a[1][2]的地址一样,也就是说a[2][-2]与a[1][2]实际上是同一个元素。因此输出6,这是正常的现象。
7楼:匿名用户
着因该是 错误的``````
数组的下标是从0开始的`````
不可能有 -2;
有什么不懂 你可以给我短信```
8楼:匿名用户
我想那是一个错误,这是明显的数组越界~ 学这么长时间c语言,我从来就没有见过~
9楼:5舍
确实很奇怪,应该是错的.
10楼:匿名用户
应该是写错了吧。没见过这样的
c语言中二维数组下标问题
11楼:嘟
a可以理解为二重指针,a[0]理解指针,a[0][0]是对这个地址进行访问了
。其实回[ ]的意义 可以理解成* 。
a[ i ]其实就相当于*(a+i) 所以原答来的就相当于 *(*(a+i)+j) +的优先级比 *的高 所以外面那个括号可以去掉 就变成了 **(a+i)+j 。
明白了吗?
12楼:朱猪丹
这里a指的是整个数组,而a[0]指二维数组第一行的元素,a[0][0]指数组中的第一个元素。
13楼:匿名用户
a为二重指针,a[0]是指针,a[0][0]是元素,
14楼:匿名用户
楼上回答的不错,顶一个。
c语言二维数组下标表示方法
15楼:匿名用户
下标就是在里的,他是重0开头的。具体表示如下:
int a[5];//5代表a最后个数组里的元素个数
是初学者吧! 要努力哟!
16楼:匿名用户
int n;
float a[n][n];
都是从0开始到n-1
求二维数组中下标为奇数的所有行的值的和用c语言写
17楼:
用以下**行解决——
for(i=1;i sum+=a[i][j];//sum是统计变量,初值为0;a是二维数组名 18楼:匿名用户 下标为奇数?是两个下标吧。都是为奇数吗? 求二维数组最小值及行列下标 c语言 19楼:匿名用户 #include typedefstructarr arr; arrfindmin(int**num,intm,intn) c语言用指针找二维数组中的最大值和下标 20楼: #include #include void inputarray(int *p,int m,int n) int findmax(int *p,int m,int n,int *prow,int *pcol) return *(p+*prow*n+*pcol); }int main() 21楼:匿名用户 #include void inputarray(int *p,int m,int n); int findmax(int *p,int m,int n,int *prow,int *pcol); int main() void inputarray(int *p,int m,int n) return max;} 1楼 你的数组a其实仍然是二维数组,因为你给的值显然是一个二维数组的值即1 2 3 3 2 1 2 5 6 你并没有真正做一个三维数组,所以赋给二维数组完全没问题,数组b的值仍然是像上面那样的形式 c语言怎么为一个三维数组赋值?我的这个二维数组是字符串,要求用c语言,不是c 2楼 匿名用户 ch i... 1楼 匿名用户 int limit 4 5 2 你这样定义是 int limit 20 2 。int limit 4 5 2 应该是 int limit 4 5 2 c语言 三维数组赋值给二维数组,为什么可以这样?里面的数值不会改变了吗? 2楼 你的数组a其实仍然是二维数组,因为你给的值显然是一个二... 1楼 天云一号 c语言中数组的下标是根据用户定义的数组大小来确定的,最小下标为0 举例说明如下 int a 5 定义一个int型数组,并对其进行初始化。则共有a 0 a 1 a 2 a 3 a 4 这5个元素,所以其下标的范围为0 5 更一般的就是 数组a n 的下标范围为0 n 1 2楼 百度用户...c语言三维数组赋值给二维数组为什么可以这样
c语言中三维数组的赋值问题,C语言中三维数组的赋值问题
C语言中数组下标有下限吗,c语言中,数组元素的下标下限为