1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 利用指针访问对象,指针指向一个对象,允许使用解引用符(操作符*)来访问对象 int ival = 42; int *p = &ival; //p存放变量ival的内存地址,p是指向变量ival的指针 cout << *p; //符号*得到指针p所指的对象 对指针解引用会得到所指的对象,给解引用的结果赋值,实际也就是给指针所指对象赋值 *p = 0; //符号*得到指针p所指对象,可经由p为变量ival赋值 *p 操作的是指针指向对象 的内存地址空间,为*p赋值实际是为p所指的对象赋值; 解引用操作适用于确实指向了对象的有效指针 使用字面值nullptr初始化指针 指针初始化为字面值0生成空指针 NULL预处理变量preprocessor variable指针赋值 NULL在变量 cstdlib; 预处理 运行与编译之前预处理变量不属于命名空间Std C++程序使用nullptr生成申明空指针 *pi 是 对象的值,pi却是对象的内存 int iival = 1024; int *pi = 0; //pi合法,是一个空指针 int *pi2 = &ival //pi2是一个合法的指针,存放ival值 if (pi) pi 的值 0,因此条件的值是 false if (pi2) pi2指向ival,因为它的值不是0,条件为 true ; 任何非0指针对应的条件值 true 对应两个类型相同的合法指针,== != 操作符 result boolera; 两个指针存储的地址值相同 指针存储的地址值相同都为nullptr; 都指向同一个对象 都指向了同一个对象的 一个指针指向某对象,同时另一个指针指向 同一条定义语句,虽然基本数据类型只有一个,申明符的形式却可以不同,一条定义语句可能定义出不同类型的变量 &r = i 赋值运算符 改变的永远都是左值 r定义多个变量 类型修饰符*& 作用于本次定义的全部变量 可以把空格写在类型修饰符和变量名中间 空格写在类型修饰符和变量名中间 空格写在类型修饰符和变量名中间 int * p; int *p; 合法但很容易产生误导 *修饰符 *p仅仅修饰了p,对该声明语句中的其他变量 并不产生任何作用 int * p,p2; //p是指向int的指针,p2是int 把修饰符和变量写在一起 int *p1,*p2; 涉及指针和引用声明 第一种把修饰符和变量标识符写在一起,此种形式着重强调变量具有的复合类型 第二种把修饰符和类型名写在一起 并且每条语句只定义一个变量; 指针是内存中对象,像其它对象一样有自己的地址,允许把指针的地址再存放到另一个指针当中 int *p,i; int pp = &p; ***指向指针的指针的指针 int ival = 1024; int *pi = &ival; //pi是一个指向int型数 int **ppi = π |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2015-04-16 C based
2014-04-16 oracle删除当前用户下所有表
2014-04-16 C标准库简单解读
2014-04-16 curl测试puppet http api接口
2014-04-16 yum kvm
2014-04-16 分享