C语言的指针种类
一、指针概念
指针:指针本身是一个变量,存储的是值得地址。
间接访问:通过一个指针访问它所指向的地址的过程,操作符 * 。
二、非法指针
int *a; *a = 12;
这段代码是错误的,由于a未被初始化,无法预测值12将存储的地方,若a指向非法地址,程序出错。
针对未初始化或释放不用的指针可以置NULL,在对指针进行间接访问前要确保初始化。
三、基本运算
char ch = 'a'; char *cp = &ch; char ch2 = *cp; // ch2位置赋值a ch2 = *cp + 1; // ch2赋值a+1 *(cp + 1) = 'b'; // ch后面位置赋b
指针也可以用关系运算符进行比较,如 ==、< 和 >。如果 p1 和 p2 指向两个相关的变量,比如同一个数组中的不同元素,则可对 p1 和 p2 进行大小比较。
四、指针常量
常量指针:一个指向常量的指针
指针常量:指针的常量,即不可改变地址的指针
char str1[] = { "Hello" }; char const *pStr1 = "World"; // 常量指针 char* const pStr2 = str1; pStr1 = str1; // pStr1指针指向可以修改,但指向的内容不能修改
辨别技巧:const放在指针操作符的左侧,则为常量指针。
五、数组指针
数组(的)指针:Array of pointers
指针的数组:A pointer to an array
int c[2] = { 0x8000000,0x00000000 }; int *a[2]; int(*b)[2] = &c; for (unsigned int i = 0; i < 2; i++) { a[i] = &(c[i]); } // 输出结果 cout << *(a[0]) << endl; cout << (*b)[1] << endl;
六、函数指针
函数指针:数据类型(*指针变量名)(参数表) ,形如int (*p)(int)
返回指针的函数:int* p(int)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)