C语言中数组名的理解和注意事项!!!

首先我们都知道数组在传参的时候,传的是数组的首元素地址,但是也有例外。

一,一维数组中

在一维数组中数组名确实能表示首元素地址,但是有两个例外。

1.sizeof(数组名),这里的数组名表示的是整个数组,计算的是整个数组的大小,单位是字节。

2.&数组名,这里的数组名表示整个数,取地址的是整个数组的地址。

以下代码可以自己动手写一下,易于加深理解。

#include<stdio.h>
int main()
{
    int arr[10]={0};
    printf("p",arr);//arr就是首元素地址
    printf("p",arr+1);//首元素地址加一,就是第二个元素的地址。
    printf("-------------\n");


    printf("p",&arr[0])//&arr[0]就是首元素地址
    printf("p",&arr[0]+1)//和arr+1一样。
    printf("-------------\n");

    printf("p",&arr)//&arr表示整个数组的地址
    printf("p",&arr+1)//表示跳过整个数组的地址,是数组最后一个地址加一的地址。


return 0;
}

注意:在构造函数中形参为数组名时,在该函数中使用sizeof(数组名)计算的是数组首元素地址的大小,而不是整个数组的大小,因为数组在传参的时候,传递的是地址。

二,二维数组中

二维数组也符合上面一维数组的两个例外。

二维数组中的数组名(arr)也代表首元素的地址,只不过在二维数组中,该地址代表的是第一行整个的地址。

#include<stdio.h>
int main()
{
	int arr[3][4] = { 0 };
	printf("p",arr);//arr代表的是数组arr的第一行整行的地址

	printf("---------------\n");

	printf("p", arr + 1);//arr+1代表的是数组arr的第二行整行的地址


	//根据这个知识点,可以计算二维数组中的行和列的大小。

	//计算行的大小
	printf("%d", sizeof(arr) / sizeof(arr[0]));//sizeof(arr)代表的是整个二维数组的大小,sizeof(arr[0])代表的是第一行数组的大小。

	//计算列的大小
	printf("%d", sizeof(arr[0]) / arr[0][0]);//sizeof(arr[0])表示数组第一行的大小,sizeof(arr[0][0])代表的是第一个元素的大小。


	return 0;
}

通过上面的例子,我们能够清晰的理解二维数组名代表的含义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值