C/C++ 中 str、str、*str 在指针语境下的具体含义(以 char* str 为例):
1. str
(指针变量本身)
- 对于
char* str
来说,str
是一个指针变量,它存储的是内存地址(指向某个字符或字符数组的首地址)。 - 例如:
char* str = "hello";
中,str
存储的是字符串"hello"
第一个字符'h'
的内存地址。 - 可以理解为:
str
本身代表地址值(指向目标数据的位置)。
2. &str
(指针变量的地址)
&str
表示取指针变量str
自己的内存地址(即指针变量本身所在的内存位置)。- 这是一个 “地址的地址”,类型是
char**
(指向指针的指针)。 - 例如:
str
存储着"hello"
的地址(假设为0x1234
),而&str
是str
这个变量自己在内存中的地址(假设为0x5678
)。 - 注意:
&str
不是 “值”,而是指针变量自身的地址。
3. *str
(指针指向的值)
*str
表示解引用,即获取指针str
所指向的内存位置中存储的实际数据。- 对于
char* str
来说,*str
就是str
指向的第一个字符(如"hello"
中的'h'
)。 - 可以理解为:
*str
代表指针指向的具体值(目标数据本身)。
总结(以 char* str = "abc";
为例)
表达式 | 含义 | 举例(假设) |
---|---|---|
str | 指针变量存储的地址(指向目标数据) | 存储 'a' 的地址 0x1000 |
&str | 指针变量自身的地址(地址的地址) | 存储 str 变量的地址 0x2000 |
*str | 指针指向的目标数据(解引用结果) | 获取 0x1000 处的值 'a' |
简单记:
str
是 “指向数据的地址”,&str
是 “指针自己的地址”,*str
是 “地址指向的数据”。