c - 打印指针的值时是否需要间接运算符?

标签 c

我正在读一本关于 c 语言的书,并且对其字符串指针示例之一有疑问。

int x;
char *str = "Food";
printf("Pointer variable value: %p\n", *str);
printf("Pointer points to: %s\n", str);
printf("Memory locations of chars are: \n");

for(x = 0; x < 5; x++)
   printf("%p\n", str[x]);

为什么第一个 printf 中的字符串名称前面需要间接寻址运算符,以及为什么 for 循环中不需要 address-of 运算符printf

但是,当我执行这个程序时,两个“o”字符实际上具有相同的地址。当我在 str[x] 前面添加地址运算符时,地址变得连续。

最佳答案

以下行是错误的。

printf("Pointer variable value: %p\n", *str);

要打印指针,第二个参数只需为 str

printf("Pointer variable value: %p\n", str);

下面这行也是错误的。

printf("%p\n", str[x]);

要打印指针,请将第二个参数更改为 &str[x]

printf("%p\n", &str[x]);

关于c - 打印指针的值时是否需要间接运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51257859/

相关文章:

c - 另一个 Linux 命令输出(管道)作为我的 C 程序的输入

c - 如何通过函数更改结构体中数据的值?

c - 如果我们在引导加载程序代码中使用 malloc,编译器会报错吗?

c - 错误 : conflicting types for a function

c - 在 C 中动态分配二维数组

c - 为什么 atan 没有产生正确的结果?

c - 如何从内核模块确定文件类型?

c - 基本框图未显示

c - C中获取strstr之前和之后的文本

C:函数未返回正确的值