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

本文通过四个C语言实例,讲解如何通过画图分析法理解和解决指针指向关系问题,包括数组元素、指针算术和结构体内存地址计算,适合初学者提升指针理解能力。
摘要由CSDN通过智能技术生成

目录

引言 

关键解决办法:

学会画图确定指向关系

例题一:

画图分析:

例题二:

画图分析: 

例题三: 

注:%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;
}
画图分析: 

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

  • 45
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值