c - 为什么程序会因使用 '%s' 取消引用 char 指针而崩溃?

标签 c string pointers

我正在学习 c,一个初学者,任何人都可以让我明白我缺少哪个概念吗? 提前致谢。

#include<stdio.h>

int main()
{
    char s[10];
    s[0]='A';
    s[1]='B';
    s[2]='\0';
    char *p;
    int i;

    p=s;


    printf("%c\n", *p); //It's ok.


    printf("%s", *p); // or *s...what's wrong here,why does program crash?

    return 0;
}

最佳答案

改变

printf("%s", *p);

printf("%s", p);

原因是 %s 需要一个指针,而 *pp 处的解引用值,也就是 char 值在 p[0]

如果这没有意义,想象一下为什么 printf("%c\n", *p) 有效。 *pp[0]相同,因为ps[0]相同指向 s。因为 s[0] 是一个 char%c 在这里工作是因为它需要一个 char。但另一方面,%s 需要 char *

关于c - 为什么程序会因使用 '%s' 取消引用 char 指针而崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107212/

相关文章:

c - 如何在进入下一个周期之前等待 system() 完成

python - 如何在 Python 中进行随机但部分随机播放?

c - 在将字符串存储在 c 中的数组中时截断字符串

c++ - 带有 std::map<T*, U> 的程序是否具有明确定义的行为?

c - 在c中传递数组

c - 尝试用 C 语言逼近欧拉数

c - C 的任务库?

c - void* 是否始终具有与 char* 相同的表示形式?

python - 类型错误 : Can't convert 'int' object to str implicitly Python 3

c - C中指针和变量的区别?