黄埔做网站公司,网站 解决负载,软件开发与程序设计有什么不同,wordpress怎样禁止采集前言#xff1a;小伙伴们又见面啦#xff01;本期内容#xff0c;博主将展开讲解有关C语言中指针的上半部分基础知识#xff0c;一起学习起来叭#xff01;#xff01;#xff01; 目录 
一.什么是指针 
二.指针类型 
1.指针的解引用 
2.指针-整数 
三.野指针 
1.野指针…前言小伙伴们又见面啦本期内容博主将展开讲解有关C语言中指针的上半部分基础知识一起学习起来叭 目录 
一.什么是指针 
二.指针类型 
1.指针的解引用 
2.指针-整数 
三.野指针 
1.野指针成因 
1指针未初始化 2指针越界访问 
2.如何规避野指针 
四.总结 一.什么是指针 
指针是内存中一个最小单元的编号也就是地址。我们平时所说到的指针一般都是指针变量是用来存放内存地址的变量。 
所以说指针实际上是一个地址而存放在指针中的值都会被当成地址处理。 
这里有一个小知识点指针在32位平台上占4个字节在64位平台上则占8个字节。具体内容相对复杂我们这里不做讲述。 
还有一点要注意一个指针虽然占有四个字节但是它存储的地址仅仅为一个字节也就是这四个字节的头头。 
二.指针类型 
我们知道定义一个指针变量就跟定义一个普通的变量一样可以有不同的类型。 
那我们又知道不同类型的变量又会占有不同的内存大小。 
那么不同类型的指针也会占有不同的内存大小吗  
#includestdio.h
int main()
{printf(%d\n, sizeof(int*));printf(%d\n, sizeof(char*));printf(%d\n, sizeof(short*));printf(%d\n, sizeof(double*));return 0;
} 我们知道sizeof是一个计算内存大小的关键字我们用它来测试一下结果如下 令人出乎意料不同类型的指针变量占用的内存大小竟然都相同为什么呢 
事实上我们定义不同类型的指针只是为了用这个指针来存放这种类型的变量的地址。 
例如我们定义char*类型的指针只是为了存放char类型变量的地址。 
那既然并不会影响指针的内存大小定义这么多类型的指针又有什么意义呢 
1.指针的解引用 
什么是指针的解引用呢 
当我们用指针变量通过地址来访问或者修改一个变量的值就叫解引用。 
#includestdio.h
int main()
{int n  0x11223344;int* p  n;*p  0;return 0;
} 
假如我们初始化变量n的内存大小为0x11223344然后我们用int型的指针变量来解引用将其值改为0我们来看它的内存怎么变化 可以看出n的四个字节的内存大小都变为了0。 
#includestdio.h
int main()
{int n  0x11223344;char* p  n;*p  0;return 0;
} 同样的方式这次我们换成char型的指针变量又会是什么结果呢 可以很轻易的看出char型的指针变量仅仅让n的一个字节的内存大小变为了0。 这便是指针类型的意义 
指针类型决定了指针进行解引用操作的时候访问几个字节。 
2.指针-整数 
#includestdio.h
int main()
{int n  5;int* p1  n;char* p2  n;printf(p1  %p\n, p1);printf(p1  1  %p\n, p1  1);printf(p2  %p\n, p2);printf(p2  1  %p\n, p1  1);return 0;
} 
看这段代码int型的指针变量p1和char型的指针变量p2的内存地址是什么结果 
p1和p2两个指针分别  1之后又会是什么结果呢 能够看出两个指针变量是可以同时访问一个变量的地址的。 
p11的后的内存跳过了4个字节而p21后的内存地址仅仅之跳过了1个字节。 
这也是指针类型的意义 
指针类型决定了指针进行-操作的时候跳过几个字节。 
三.野指针 
所谓野指针也就是说指针指向的位置是不可知的随机的不正确的没有明确限制的。 
1.野指针成因 
1指针未初始化 int *p; *p  10; 这样的解引用方式直接就是错误的在VS环境下直接就会报错 2指针越界访问 
#includestdio.h
int main()
{int arr[10]  { 0 };int* p  arr;int i  0;for (i  0; i  10; i){*p  1;p;}return 0;
} 
假如我们想用一个指针来改变数组中的每一个值但是却不小心超过了数组的大小这样就造成了越界访问出现了错误。 
指针指向的地址超过了数组的范围就变成了野指针。 2.如何规避野指针 
指针要初始化小心指针越界指针指向的空间释放及时置NULL避免返回局部变量的地址指针使用之前检查有效性 
这里要注意一点如果我们非要定义一个未知指向的指针就要将其置NULL也就是置0。 
当指针置NULL时也相当于是存了一个空地址不能对这个地址直接进行操作。 
想要操作此指针就必须让它指向其他已知的地址。 
四.总结 
以上就是有关C语言基础——指针的上半部分的内容啦稍后博主将更新指针下一起期待一下叭 
喜欢博主文章的小伙伴们不要忘记一键三连哦 
我们下期再见