本文目录一览:
- 在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?
- C语言数组中为什么写a[5]={0},这样写对吗?不是说方括号里面的数字和花括号里面的元素个数相同
- c语言,二维数a,大小为3*5
- 在C语言中,数组a[5],数组名a可以a++吗
在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?
c语言中long占4个字节,所以long a[3][5]占435=60个字节 从元素角度理解a代表a[0][0];从二维数组理解a代表a二维数组名,即二维数组首地址;从一维数组角度理解a代表a[0]即二维数组第一行看作一个一维数组,a[0]为这个一维数组的首地址; a[1]从二维数组看代表a[1][0]是元素,从一维数组角度看代表二维数组第二行的首地址和上面a[0]一样,
C语言数组中为什么写a[5]={0},这样写对吗?不是说方括号里面的数字和花括号里面的元素个数相同
a[5]={0}这种写法是对的,C语言对数组初始化的值个数可以少于数组元素个数,当初始化值的个数少于数组元素个数时,前面的按序初始化相应值, 后面的初始化为0(全局或静态数组)或为不确定值(局部数组)。
c语言,二维数a,大小为3*5
首先明确概念: a为二维数组名,此数组有3行5列, 共15个元素。 但也可这样来理解,数组a由三个元素组成:a[0], a[1], a[2]。 而它们中每个元素又是一个一维数组, 且都含有5个元素。 a代表二维数组的首地址。也是二维数组第0行的首地址。 所以 a[2]和a+2都是二维数组第2行的首地址。//---------------------你的问题1,2 在二维数组中,我们还可用指针的形式来表示各元素的地址。所以a[0]=(a+0); 所以(a+2)也是a[2]即二维数组第2行的首地址 ///---------------------------你的问题3 根据以上推论: ((a+2)+3) == *(a[2]+3)即在第2行首地址上偏移3,那么就是a[2][3]的值 //--------你的问题4 (2)如果输出a和a[0]的值是否相等,为什么,各代表什么含义。 由上:a代表二维数组的首地址。也是二维数组第0行的首地址。 可得,如果输出他们的值,是一样的。
在C语言中,数组a[5],数组名a可以a++吗
不能。因为变量指针可以递增,而数组不能递增,数组可以看成一个指针常量。代码修改:
#include stdio.h
int main(void)
{
int array[5]={2,4,5,23,5};
int *p,i;
p=array;
printf("请输入是五个数:\n");
for(i=0;i5;i++)
scanf("%d",array[i]);
printf("\n");
printf("输出五个数:\n");
//for(i=0;i5;i++)
printf("%d\n",*(p++));
}
扩展资料:
指针运算
- 指针变量加/减一个整数 例如:p++, p--, p+i 等。 C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+i指向p下面的第i个元素。
- 指针变量赋值
C语言与C++语言规定,可以将一个变量或一个函数的入口地址赋值给相应的指针变量。
例如(假设p是相应的指针):
p = a; p = max;(max为已经定义的函数)
- 指针变量相减 如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。 注意,指针变量相加无实际意义。
- 指针变量比较 如果两个指针变量指向同一个数组的元素,则可以进行比较。指向前面元素的指针变量小于指向后面元素的指针变量。