指针所指向的内存区以指针的值为起始地址,长度为 sizeof(type) 的一片内存区。指针本身所占据的内存区
C 语言中,C23 也引入了 nullptr 作为空指针常量,同时引入 nullptr_t 作为其类型。指针的 const 限定
const 指针
- 把只读型对象的地址赋值给 非指向 const 对象的指针 是错误的;
- 可以把非只读型对象的地址赋值给 指向 const 对象的指针,但不能通过 指向 const 对象的指针 间接修改指向对象;
- 实际编程过程中,指向 const 的指针 常用作函数的形参,以此确保传递给函数的参数对象在函数中不能被修改。
不能改变只读型指针的值,但是可以通过只读型指针间接修改指向对象指针的运算
执行 ptr++ 或 ptr-- 后,指针 ptr 的值会增加 sizeof(type),指向下一个该类型元素的地址。指针的比较
两个相比较的指针所指向的类型应当相同,即指向相关变量。指针与指针之间的减法运算
定义 int array[N], *ptr = array;,需注意 ptr 和数组名 array 并不完全等价。遍历一维数组
比如由于 array 是一个常量指针,所以不允许修改,如 array ++ 是不正确的语法。
注意,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。以下程序生成 N 个随机数,并返回表示指针的数组名(数组首元素的地址):
第一种定义方式编译通过的原因是,字符字面量实际存储在静态存储区,是持久存在的。也可以定义一个指针数组存储多个字符串:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |