程序笔记   发布时间:2022-07-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了室友一把吃鸡的时间带你拿捏C语言指针类型的意义大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

C语言指针类型的意义

一般情况下࿰c;可划分为两点: 1、指针±整数:指针的类型决定了指针向前或者向后走一步有多大(距离)。 2、指针的解引用:指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)。 接下来我将用代码举例子的形式来为大家讲解指针的这两个意义!

指针±整数

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

从代码演示中࿰c;我们可以清楚地观察到p1指针的最初位置为00B3F758(16进制表示࿰c;下同)࿰c;p1指针+1以后࿰c;指针的位置变成了00B3F75C࿰c;这中间差了4个字节的大小;而p2指针的最初位置为00B3F740࿰c;p2指针+1以后࿰c;指针的位置变成了00B3F741࿰c;这中间差了1个字节的大小。

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

从代码演示中࿰c;我们可以清楚地观察到p1指针的最初位置为00EFFAC8(16进制表示࿰c;下同)࿰c;p1指针+1以后࿰c;指针的位置变成了00EFFAC4࿰c;这中间差了4个字节的大小;而p2指针的最初位置为00EFFAB0࿰c;p2指针+1以后࿰c;指针的位置变成了00EFFAAF࿰c;这中间差了1个字节的大小。

实践是检验真理的唯一标准࿰c;你还可以用其他类型的指针继续尝试类似这样的操作࿰c;最终你会发现࿰c;指针类型的意义之一是:指针的类型决定了指针向前或者向后走一步有多大(距离)。

指针的解引用

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

打印出来的结果我们会惊奇的发现࿰c;为何sustain变量被指针变量p1重新赋值0后打印出来的结果就变成了0࿰c;而@R_618_5550@e变量被指针变量p2重新赋值0后打印出来的结果依旧那么的大的数是1719109632࿰c;这究竟是为何呢?接下来我用他俩内存的变化来为大家讲解原因。

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

从代码内存的演示中࿰c;我们惊奇地发现指针p1和指针p2同时被解引用赋值为0的时候࿰c;指针p1一次性改变了4个字节的内存空间变化࿰c;而指针p2一次性改变了1个字节的内存空间变化࿰c;而p1对应的指针类型为int类型的指针࿰c;而p2对应的指针类型为char类型的指针࿰c;从而我们可以得出指针类型的意义之一是:指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)。(实践是检验真理的唯一标准࿰c;你还可以多用其他的指针类型来进行类似的操作获取结论)

附1:

整体演示代码提取:

#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//
//int main()
//{
//	int entertain = 0x11223344;
//	int *p1 = &entertain;
//	int retain = 0x66778899;
//	char *p2 = &retain;
//	printf("请看int*指针类型+1地址位置的变化n");
//	printf("%pn", p1);
//	printf("%pn", p1 + 1);
//	printf("请看char*指针类型+1地址位置的变化n");
//	printf("%pn",p2);
//	printf("%pn", p2 + 1);
//	return 0;
//}

//#include<stdio.h>
//
//int main()
//{
//	int entertain = 0x11223344;
//	int *p1 = &entertain;
//	int retain = 0x66778899;
//	char *p2 = &retain;
//	printf("请看int*指针类型-1地址位置的变化n");
//	printf("%pn", p1);
//	printf("%pn", p1 - 1);
//	printf("请看char*指针类型-1地址位置的变化n");
//	printf("%pn", p2);
//	printf("%pn", p2 - 1);
//	return 0;
//}

#include<stdio.h>

int @H_219_142@main()
{
	int sustain = 0x11223344;
	int *p1 = &sustain;
	int @R_618_5550@e = 0x66778899;
	char *p2 = &@R_618_5550@e;
	*p1 = 0;
	*p2 = 0;
	printf("%dn", sustain);
	printf("%dn", @R_618_5550@e);
	return 0;
}
@H_801_236@ 

附2:

上述就是C语言关于指针类型意义的讲解࿰c;下篇文章将讲解的是C语言的野指针问题࿰c;欲知后事如何࿰c;请听下章分析!

备注:

楼主不才࿰c;不喜勿喷࿰c;若有错误或需要改进的地方࿰c;非常感谢你的指出࿰c;我会积极学习采纳。谢谢家人们一直以来的支持和鼓励࿰c;我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm࿰c;若有编程学习方面的问题可以私信我一同探讨(我尽力帮)࿰c;毕竟“众人拾柴火焰高”࿰c;大家一起交流学习࿰c;共同进步!

室友一把吃鸡的时间带你拿捏C语言指针类型的意义

2022.1.11

大佬总结

以上是大佬教程为你收集整理的室友一把吃鸡的时间带你拿捏C语言指针类型的意义全部内容,希望文章能够帮你解决室友一把吃鸡的时间带你拿捏C语言指针类型的意义所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。