c语言数组a35,C语言数组函数

发布时间:2022-11-25

本文目录一览:

  1. 在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?
  2. C语言数组中为什么写a[5]={0},这样写对吗?不是说方括号里面的数字和花括号里面的元素个数相同
  3. c语言,二维数a,大小为3*5
  4. 在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++));
}

扩展资料:

指针运算

  1. 指针变量加/减一个整数 例如:p++, p--, p+i 等。 C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+i指向p下面的第i个元素。
  2. 指针变量赋值 C语言与C++语言规定,可以将一个变量或一个函数的入口地址赋值给相应的指针变量。 例如(假设p是相应的指针):
    p = a;
    p = max;(max为已经定义的函数)
    
  3. 指针变量相减 如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。 注意,指针变量相加无实际意义。
  4. 指针变量比较 如果两个指针变量指向同一个数组的元素,则可以进行比较。指向前面元素的指针变量小于指向后面元素的指针变量。

参考资料: