0
点赞
收藏
分享

微信扫一扫

数组名的含义 以及数组指针和指针数组

一、数组名

数组名在大多数情况下表示为数组首元素的地址,但有两个例外

1.sizeof可用来计算数组所占字节数,sizeof(arr)中的数组arr代表整个数组


2.&arr,此时数组arr代表整个数组的地址

整个数组的地址和数组首元素的地址有什么区别?

假如有int arr[10],数组地址和首元素地址相同,但数组地址+1间隔40个字节,数组首元素地址+1间隔4个字节

int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };	
	printf("%p\n", arr);
	printf("%p\n", &arr);

	printf("给两个指针各自加1\n");

	printf("%p\n", arr+1);
	printf("%p\n", &arr+1);
	return 0;
}

数组名的含义 以及数组指针和指针数组_数组指针

如果我们想存放这个间隔40字节的数组的指针就要用到“数组指针”

二、数组指针

数组指针本质上是指针,用于存放整个数组的指针,用int(*p)[10]表示

int main() {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };	
	int(*p)[10] = &arr;
	printf("%p\n", p);   \\008FF9A4
	printf("%p", p+1);   \\008FF9CC
	return 0;
}

三、指针数组

指针数组本质上是数组,是用来存放指针的数组,用int* arr[10]表示

int main() {
	int a = 1;
	int b = 2;
	int c = 3;
	int* arr[3] = { &a,&b,&c };
	printf(" % p % p % p", arr[0], arr[1], arr[2]); //008FF818 008FF80C 008FF800
	return 0;
}


举报

相关推荐

0 条评论