c - 如何在 C 中循环 char 指针?

标签 c pointers

我正在尝试访问“c”中预初始化的 char 指针的所有元素。这是代码:

#include <stdio.h>
#include <stdlib.h>

void main()
{
    char **s="Hello";
    printf("%c",*(*&s+1));
}

这段代码应该输出“e”,但没有。我做错了什么?

另外,如何一一访问所有元素?

最佳答案

s 的类型不正确。字符串常量 "Hello" 具有数组类型,可以衰减为 char * 类型,但您将其分配给 char ** 类型的变量>.

s 的类型更改为 char *,您的代码将输出“e”:

 char *s = "Hello";

另外,看看这个:

*(*&s+1)

*出现在&之前时,它们会相互抵消。所以你可以将其简化为:

*(s+1)

或者等效的:

s[1]

关于c - 如何在 C 中循环 char 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59054632/

相关文章:

c - 指针的内存分配

c++ - STL 容器上的指针

c++ - C++ 中的循环指针

c++ - 使用特殊规则将一个数组分成两个数组

C 字符串修改

c - 尝试访问结构中的指针时失败

c - 在 C 中的数组末尾添加不需要的字符

c - 类似 Printf 的函数,具有可选格式字符串参数和 GCC 格式类型检查

c - 为什么 scanf() 会导致此代码中的无限循环?

c - 使用C语言调用HTTP Web Service