深挖小白必会指针笔试题<一>

2024-01-03 19:50:20

目录

引言?

关键解决办法:

学会画图确定指向关系

例题一:

画图分析:

例题二:

画图分析:?

例题三:?

注:%x是按十六进制打印

画图分析:

例题四:?

画图分析:?

谢谢观看,学完你我皆是大佬?


听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

引言?

关于指针的问题常常是每个c初学者最痛疼的问题,常常搞不清指向关系而出错,接下来将通过一些经典的笔试题来详细讲解关于指针的问题,难度逐渐增加,请耐心看到最后,将会收获满满

关键解决办法:

学会画图确定指向关系

例题一:

int main()
{
 int a[5] = { 1, 2, 3, 4, 5 };
 int *ptr = (int *)(&a + 1);
 printf( "%d,%d", *(a + 1), *(ptr - 1));
 return 0;
}
//程序的结果是什么?
画图分析:

例题二:

//这里结构体的大小是20个字节
struct Test
{
 int Num;
 char *pcName;
 short sDate;
 char cha[2];
 short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
int main()
{
 printf("%p\n", p + 0x1);
 printf("%p\n", (unsigned long)p + 0x1);
 printf("%p\n", (unsigned int*)p + 0x1);
 return 0;
}
画图分析:?

例题三:?

int main()
{
 int a[4] = { 1, 2, 3, 4 };
 int *ptr1 = (int *)(&a + 1);
 int *ptr2 = (int *)((int)a + 1);
 printf( "%x,%x", ptr1[-1], *ptr2);
 return 0;
}
注:%x是按十六进制打印
画图分析:

例题四:?

#include <stdio.h>
int main()
{
 int a[3][2] = { (0, 1), (2, 3), (4, 5) };
 int *p;
 p = a[0];
 printf( "%d", p[0]);
 return 0;
}
画图分析:?

谢谢观看,学完你我皆是大佬?

文章来源:https://blog.csdn.net/Miwll/article/details/135361264
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。