首页 > 编程知识 正文

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

时间:2024-04-24 11:43:00 阅读:333526 作者:NQPC

本文目录一览:

在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?

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]一样,

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++吗

不能。因为变量指针可以递增,而数组不能递增,数组可以看成一个指针常量。代码修改:

#includestdio.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("%dn",*(p++));

}

扩展资料:

指针运算

1、指针变量加/减一个整数

例如:p++,p--,p+i等。

C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+i指向p下面的第i个元素。

2、指针变量赋值

C语言与C++语言规定,可以将一个变量或一个函数的入口地址赋值给相应的指针变量。

例如(假设p是相应的指针):

p=a;

p=max;(max为已经定义的函数)

3、指针变量相减

如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数。

注意,指针变量相加无实际意义。

4、指针变量比较

如果两个指针变量指向同一个数组的元素,则可以进行比较。指向前面元素的指针变量小于指向后面元素的指针变量。

参考资料:

百度百科-指针运算

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。