学习目标:
c语言指针部分知识
学习内容:
指针类型、野指针、二级指针
学习时间:
两三周之前吧
之前没上传过,这几天浅浅记录一下
学习产出:
- 指针类型
int main()
{
printf("%d\n", sizeof(char*));//4
printf("%d\n", sizeof(short*));//4
printf("%d\n", sizeof(int*));//4
printf("%d\n", sizeof(double*));//4
//地址大小和32位(4)、64位(8)有关
return 0;
}
可以看出不同类型指针都可以存到a地址
下面来看两种指针存到的区别
通过int* pa改变数值后改变4个字节
通过char* pc改变数值后改变一个字节
- 指针类型决定了指针进行解引用操作时,能够访问的空间的大小
int* p:p能访问4个字节
charp:p能访问1个字节
doublep:*p能访问8个字节 - 指针类型决定了:指针走一步走多远(指针的步长)
int* p:p+1–>4
char* p:p+1–>1
double* p:p+1–>8
- 野指针
- 指针未初始化
int* p;//随机地址
- 指针越界访问
例如数组10个元素,for循环用指针访问11个
- 指针指向的空间被释放
- 规避野指针:
1.指针初始化
2.小心指针越界
3.指针指向空间若被释放,则置NULL
4.指针使用之前检查有效性
- 二级指针
int main()
{//二级指针
int a = 3;
int* pa = &a;
int** ppa = &pa;//ppa是二级指针
return 0;
}
今天的分享就到此为止吧,每天努力一点点。指针的部分还有好多哟,继续学习吧,或许明天就学完了呢。昨天第一次发博客,好多好多人浏览了,还是很开心的,或许这就是“分享欲”吧,有知识的分享才是高质量分享吖。