c - 如何在c中打印指针?

标签 c pointers

有人可以向我解释为什么这段代码会出现段错误吗:

char string[] = "this is a string";
char * string2 = "this is another string";
printf("%s\n",string );
printf("%s\n",  string2);
printf("string[2]= %s, string2 = %s\n", string[2], &string2 );

当我尝试打印时它也给出同样的错误

*string2 or *string2[2] or &string2[2]

我真的很困惑,同样我在网站上看到的例子似乎打印出来了,但不是这个。

最佳答案

前两个很好,但您可能需要最后一个:

printf("string[2]= %c, string2 = %p\n", string[2], (void *)&string2 );
                    ^             ^

您遇到段错误是因为您欺骗 printf 将小整数 (string[2]) 解释为指针(这就是 %s 预计)。

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

相关文章:

c - 原始线程是否执行由 `omp section` 指令定义的程序段之一?

c - 为什么可以这样在struct中声明一个数组,又该如何使用呢?

c++ - Pthreads 和结构 C++

c - KERN_INVALID_ADDRESS 让我难住了

c - C中struct的动态分配

c - 将 Homebrew 编译的 openmpi(或 mpich2)链接到 Homebrew 的 gcc

python - 为指向 ctypes 结构的指针释放内存时出错?

c - 用于从函数返回字符串文字的程序的输出

c++ - 非静态成员函数的无效使用 - Arduino - Automaton

c++ - 在 C++ 中的函数名前使用符号的含义?