char * p 与“零值”比较 C++
时间: 2023-08-11 09:03:19 浏览: 38
在 C++ 中,char 类型指针的零值为 nullptr,因此当 char 类型指针变量 p 与零值比较时,可以写成 p == nullptr。需要注意的是,指针变量在初始化时如果没有赋值,则其值为未定义,此时和 nullptr 进行比较可能会产生不可预知的结果。因此,在使用指针变量之前,应该先将其初始化为 nullptr 或者指向有效的内存地址。
相关问题
char *p与char(*p)
### 回答1:
char *p 表示 p 是一个指向 char 类型的指针,可以用来存储字符数组的首地址。
而 char (*p) 则表示 p 是一个指向函数的指针,这个函数返回 char 类型。通常这种形式的指针被用来指向一个字符处理函数或者字符数组排序函数等。
需要注意的是,这两个表达式之间只有一个小括号的差别,但其意义完全不同。
### 回答2:
char *p 与 char(*p) 都是关于指针的声明语法,但它们的含义和用法略有不同。
char *p 声明了一个指向字符型的指针变量 p。它表示 p 是一个指针变量,可以存储一个字符型变量的地址。可以通过 *p 操作符来访问指针指向的字符型变量。
而 char(*p) 声明了一个函数指针变量 p,该函数指针指向一个返回类型为 char 的函数。这里的括号是必须的,因为它表明 () 内的内容是一个函数指针。可以通过 (*p)() 的方式来调用函数指针指向的函数。
可以看出,char *p 和 char(*p) 主要是在关注点上的区别。char *p 更关注指针的类型(指向字符型变量的指针),而 char(*p) 更关注指针指向的内容的类型(指向返回类型为 char 的函数的指针)。
总结起来,char *p 是一个指向字符型变量的指针变量,而 char(*p) 是一个函数指针变量,指向一个返回类型为 char 的函数。
### 回答3:
char *p 是一个指针,指向一个字符型数据的地址。
而char(*p) 是一个字符型的变量,括号表示其为一个指针。
char *p 表示 p 是一个指针,可以通过 p 来访问一个或多个字符。
比如,可以用 char *p 来声明一个指向字符数组的指针:
```c++
char str[] = "Hello";
char *p = str;
```
这样,p 指向字符数组 "Hello" 的第一个字符 'H'。
而 char(*p) 表示 p 是一个指针,指向一个字符型的变量。
比如,可以用 char(*p) 来声明一个指向字符变量的指针:
```c++
char c = 'A';
char(*p) = &c;
```
这样,p 指向字符变量 'A'。
总结来说,char *p 是一个指向字符型数据的指针,而 char(*p) 是一个字符型指针,指向一个字符型变量。
char* *p char *p
char *p是一个指针,指向一个字符类型的变量或字符串的首地址。而char **p是一个指向指针的指针,即指向一个指针变量的地址。
在引用中提到的char *p和char **p是用来表示字符串的首地址或指针的。char *p可以用来表示一个字符串的首地址,而char **p则可以用来表示一个指向指针的指针。
在引用中列举了一些可能的组合,它们都是关于指向字符串或指针的指针的类型。这些组合中包括了char *const p,它表示一个指向常量字符的指针变量,即指针指向的字符不能被修改。还有char const**p,它表示一个指向指向常量字符的指针的指针。
在引用中给出了一些例子,它们展示了不同类型的指针之间的初始化是否合法。例如,char **p1;const char**p2=p1是不合法的,因为指向指针的指针和指向常量指针的指针之间是不兼容的。
综上所述,char *p是一个指向字符串的首地址的指针,而char **p是一个指向指针的指针。