C语言这门课程在计算机的基础教学中一直占有比较重要的地位,然而要想突破C语言的学习,对指针的掌握是非常重要的,本文将具体针对指针的基础做详尽的介绍
1. 指针类型
指针以字节为单位;
指针类型决定了解引用时能访问的空间的大小;也决定了指针的步长(指针+1走多远)
2. 野指针
- 指针未初始化
- 指针越界访问
- 指针指向的空间已释放
int* test()
{
int a = 10;//野指针
return &a;
}
int main(){
int* p = test();
//test函数里的a是局部变量,出函数时,储存变量的空间已经还给操作系统了
printf("%d\n",*p);
//此时通过解引用不能再访问到a;
}
如何规避野指针呢?
- 指针初始化
- 小心指针越界
- 指针指向空间释放即使置NULL
- 避免返回局部变量的地址
- 指针使用之前检查有效性
3. 指针的运算
3.1 指针+-整数
int arr[5] = {0,1, 2, 3, 4};
int* p = arr;
int i = 0;
for(i=0; i<5; i++)
{
//printf("%d ",*p);
//p++;
printf("%d ",*p++);//以上两种写法相同
}
3.2指针-指针
得到的是中间元素的个数,可以用来求字符串的长度
int my_strlen(char* arr)
{
char* start = arr;
char* end = arr;
while(*end != '\0')
{
end++;
}
return end - start;
}
3.3 指针的关系运算
其实就是指针比较大小。实际在绝大部分的编译器上是可以顺利完成任务的,然而我们还是应该避免这样写,因为标准并不保证它可行。
float values[5];
float *vp;
int i = 0;
for (vp = &values[0]; vp < &values[5];)
{
*vp++ = 0;
}
4. 指针数组
存放指针的数组
int a; int b; int c;
int* arr[3] = {&a,&b,&c};
到此这篇关于C语言简明介绍指针的使用的文章就介绍到这了,更多相关C语言指针内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:C语言简明介绍指针的使用


猜你喜欢
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- C++ 数据结构超详细讲解顺序表 2023-03-25
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言详解float类型在内存中的存储方式 2023-03-27
- Qt计时器使用方法详解 2023-05-30
- ubuntu下C/C++获取剩余内存 2023-09-18
- C语言qsort()函数的使用方法详解 2023-04-26