【C语言初阶】数组名

本文详细讲解了C语言中数组名的概念,指出数组名表示数组首元素的地址,并通过示例说明数组名与指针的关系,以及sizeof运算符在计算数组大小的应用。
摘要由CSDN通过智能技术生成

【C语言初阶】数组名

五、数组名

数组名表示数组首元素的地址。

1 数组名与&数组首元素

int arr[10] = { 0 };
int *p = NULL;

p = arr;
p = &arr[0];

arr&arr[0] 都表示数组首元素的内存地址二者都是常量,在程序运行过程中不会改变。并且可以把他们赋值给指针变量。


2 数组名示例

2.1 示例1

代码示例

#include<stdio.h>

int main()
{
	//数组名示例1

	int arr[10] = { 1,2,3,4,5 };

	printf("%p\n", &arr[0]);
	printf("%p\n", arr);//同上
	printf("%p\n", arr + 0);//同上

	printf("%d\n", arr[0]);//1
	printf("%d\n", *arr);//1
	printf("%d\n", *(arr + 0));//1

	return 0;
}

解释说明

1 我们发现数组名以地址形式打印的结果和数组首元素一致,也就是说数组名的值相当于是首元素的地址

2 对一维数组数组名进行解引用的结果是一维数组首元素的值


2.2 示例2

代码示例

#include<stdio.h>

int main()
{
	//数组名示例2

	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));//40
	printf("%d\n", sizeof arr);//40

	return 0;
}

解释说明

1 sizeof(arr) :计算的是整个数组的大小

2 sizeof 后跟变量名或数组名时可以省略括号,如果跟的是类型就必须加上括号。


2.3 示例3

代码示例

#include<stdio.h>

int main()
{
	//对数组名取地址

	int arr[10] = { 0 };

	printf("arr =   %p\n", arr);	//00DDF920
	printf("arr+1 = %p\n", arr + 1);//00DDF924

	printf("&arr[0] =   %p\n", &arr[0]);	//00DDF920
	printf("&arr[0]+1 = %p\n", &arr[0] + 1);//00DDF924

	printf("&arr =   %p\n", &arr);		//00DDF920
	printf("&arr+1 = %p\n", &arr + 1);	//00DDF948

	return 0;
}

解释说明

1 arr&arr[0]&arr 的值都是一样的。前两个表示数组首元素的地址。而对数组名取地址则表示整个数组的地址。虽然他们的值都是一样的。

2 arr+1&arr[0]+1 都表示跳过一个数组元素类型的大小,即1个 int

3 &arr+1 表示跳过一个数组类型的大小,即10个 int

4 转换说明 %p 通常以十六进制显示指针的值,而一个 int(4个字节)用十六进制显示为:0x4

取地址数组名


2.4 重点说明

  • sizeof(数组名) :计算的是整个数组的大小sizeof 的操作数如果是数组名,那么数组名表示的就是整个数组,即计算的是数组这个复合数据类型的大小

  • &数组名 :取出的是数组的地址。&数组名,数组名表示整个数组

  • 除上述两种情况之外,数组名皆表示数组首元素的地址。


总结:

  本节介绍了数组名的含义,以及 sizeof(数组名)&数组名 表示的含义。


感谢您的阅读!如有任何错误,欢迎您的批评指正!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值