取消引用char指针返回int?为什么?

例如,以下代码在编译时返回错误和警告int,更改为%d

警告:格式%s需要 type 的char *参数,但参数 2 具有类型int

void stringd() {
    char *s = "Hello";
    printf("derefernced s is %s", *s);
}

回答

*s是 char 类型的表达式,因为它是应用于指向 char 1的指针的解引用运算符。结果,它在传递给;时被提升为int printf;为了打印以空字符结尾的字符串,您需要将指针传递给第一个字符(即 just s)。

1即使s不是 const 指针,您也不应该尝试修改它指向的字符,因为它们可能被放置在只读内存中,其中字符串文字存储在某些体系结构/环境中;有关更多详细信息,请参阅此讨论。


以上是取消引用char指针返回int?为什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>