指针和数组笔试题解析T4

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

指针和数组笔试题解析T4_c语言指针笔试题解析

今日份练习“指针和数组”试题练习4

前言:

熟练对数组名与&数组名地址的操作性质,了解其指针是如何在二维数组中如何运动的。

T4:
#include<stdio.h>
int main()
{
	int arr[2][5] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p1 = (int*)(&arr + 1);
	int* p2 = (int*)(*(arr + 1));
	printf("%d\n",*(p1-1));
	printf("%d\n",*(p2-1));
	return 0;
}

先尝试自己画图解题~~~

👇

👇

👇

指针和数组笔试题解析T4_c语言指针笔试题解析_02

✨答案是“10”和“5”✨

解析:

该题主要考察数组名的地址与&地址数组名地址表示的意义是什么

1.int arr[2][5] = { 1,2,3,4,5,6,7,8,9,10 };//先画出二维数组的表示图

指针和数组笔试题解析T4_c语言指针笔试题解析_03

2.int* p1 = (int*)(&arr + 1);//&arr取出的地址代表的是整个数组的地址,该地址+1则跳过一个arr数组的大小。指针和数组笔试题解析T4_c语言指针笔试题解析_04因为是指向arr后一个地址空间,且该空间目前是未知类型,且把它强制转换成整型指针存整型指针变量p1中。指针和数组笔试题解析T4_c语言指针笔试题解析_05目前p1指向的空间

3.int* p2 = (int*)(*(arr + 1));//arr数组名即代表首元素的地址,且arr是个二维数组,即arr首元素的地址代表整个arr[0]的地址,arr+1跳过整个 arr[0]空间的大小,再把该地址赋于p2。指针和数组笔试题解析T4_c语言指针笔试题解析_06目前p2指向的空间

4.printf("%d\n",*(p1-1));//将目前p1的地址减一,p1为整型指针,减一往前跳一个整型。指针和数组笔试题解析T4_c语言指针笔试题解析_07此时p1指向整型10的空间进行解引用则得到10

5.printf("%d\n",*(p2-1));//将目前p2的地址减一,p2为整型指针,减一往前跳一个整型。指针和数组笔试题解析T4_c语言指针笔试题解析_08此时p2指向整型5的空间,进行解引用则得到5

敬请期待下一题~

你学会了嘛😁

指针和数组笔试题解析T4_c语言指针笔试题解析_09

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6