如何在C中循环使用char指针?

时间:2019-11-26 15:49:09

标签: c pointers

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

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

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

此代码应输出“ e”,但不输出。我在做什么错了?

此外,我如何一个接一个地访问所有元素?

2 个答案:

答案 0 :(得分:3)

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

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

 char *s = "Hello";

还要看这个:

*(*&s+1)

*刚好在&之前时,它们会互相抵消。因此,您可以将其简化为:

*(s+1)

或等效地:

s[1]

答案 1 :(得分:0)

假设您没有看到Hello的“ e”,我强烈建议您看这篇文章。

What to do when the pointer doesn't print the string properly

总结一下,当您引用指针s时,它仅读取Hello的H(因为字符串的指针就是这样工作的-它指向字符串的第一个字符,例如s [0]),结果导致您的代码仅打印出H。

最重要的是,您的指针是双指针,这是不正确的。

以这种方式尝试。

#include <stdio.h>
#include <stdlib.h>
void main()
{
  char s[] = "Hello";
  printf("%s\n",s);
}