指针和数组笔试题解析T4
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
今日份练习“指针和数组”试题练习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;
}
✨先尝试自己画图解题~~~✨
✨
揭
👇
晓
👇
答
👇
案
✨
✨答案是“10”和“5”✨
解析:
该题主要考察数组名的地址与&地址数组名地址表示的意义是什么
1.int arr[2][5] = { 1,2,3,4,5,6,7,8,9,10 };
//先画出二维数组的表示图
2.int* p1 = (int*)(&arr + 1);
//&arr取出的地址代表的是整个数组的地址,该地址+1则跳过一个arr数组的大小。因为是指向arr后一个地址空间,且该空间目前是未知类型,且把它强制转换成整型指针存整型指针变量p1中。目前p1指向的空间
3.int* p2 = (int*)(*(arr + 1));
//arr数组名即代表首元素的地址,且arr是个二维数组,即arr首元素的地址代表整个arr[0]的地址,arr+1跳过整个 arr[0]空间的大小,再把该地址赋于p2。目前p2指向的空间
4.printf("%d\n",*(p1-1));
//将目前p1的地址减一,p1为整型指针,减一往前跳一个整型。此时p1指向整型10的空间进行解引用则得到10
5.printf("%d\n",*(p2-1));
//将目前p2的地址减一,p2为整型指针,减一往前跳一个整型。此时p2指向整型5的空间,进行解引用则得到5
敬请期待下一题~
你学会了嘛😁
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |