C语言—什么是数组名

#define _CRT_SECURE_NO_WARNINGS 1

#include
int main()
{
	int arr[]={1,2,3,4};
	printf("%p\n",arr);
	printf("%p\n",&arr);
	printf("%p\n",*arr);
	return 0;
}

C语言—什么是数组名_第1张图片

 结论:数组名是数组首元素地址(下标为0的元素是首元素)

例外:

1、sizeof(数组名),该数组数组名表示整个数组,sizeof计算数组大小,单位字节

#define _CRT_SECURE_NO_WARNINGS 1

#include
int main()
{
	int arr[10]={0};
	printf("%d\n",sizeof(arr));
	return 0;
}

C语言—什么是数组名_第2张图片

 2、&(数组名),数组名代表整个数组,取出的是整个数组的地址

#define _CRT_SECURE_NO_WARNINGS 1

#include
int main()
{
	int arr[]={1,2,3,4};
	printf("%p\n",arr);
	printf("%p\n",&arr[0]);
	printf("%p\n",&arr);
	return 0;
}

C语言—什么是数组名_第3张图片

 输出的结果是一样的,但是&(arr)的地址代表的是从第一个数组元素开始,分别+1发现输出结果不通,因为&arr+1输出的是数组的地址,而其他输出的是数组中首元素+1的元素地址(第二个元素地址)

#define _CRT_SECURE_NO_WARNINGS 1

#include
int main()
{
	int arr[]={1,2,3,4};
	printf("%p\n",arr);
	printf("%p\n",arr+1);
	printf("\n");
	printf("%p\n",&arr[0]);
	printf("%p\n",&arr[0]+1);
	printf("\n");
	printf("%p\n",&arr);
	printf("%p\n",&arr+1);
	return 0;
}

 C语言—什么是数组名_第4张图片

你可能感兴趣的:(C语言,c语言,算法,数据结构)