char * x =“ geeksquiz”是什么意思?

时间:2019-01-20 13:31:43

标签: c++ c pointers

我对编程很陌生。我经常遇到这个宣言。  例如说:

char *x = "geeksquiz";

这是否意味着x包含字符串的第一个元素(即字符'g')的地址?

如果是这样,请考虑以下示例:

char *str1 = "geeks"; 
char *str2 = "forgeeks"; 
printf("str1 is %s, str2 is %s", str1, str2);

输出为:

str1 is geeks, str2 is forgeeks

如果分别持有地址,printf语句如何打印str1是geeks和str2是forgeeks?还是占位符%s指示printf打印字符串文字?

2 个答案:

答案 0 :(得分:1)

  

这是否意味着x包含字符串的第一个元素(即字符'g')的地址?

是的

  

是占位符%s指示printf打印字符串文字吗?

是的

更具体地说,%s不受字符串文字限制。它用于打印以null终止的sring-字符串文字是。另外,它称为格式说明符


考虑使用标记,请注意表达式char *x = "geeksquiz";在C ++中格式错误。在C ++中,字符串文字是const char的数组,并且不会衰减到指向非const char的指针。它在C语言中格式良好,因为在该语言中,字符串文字是非常量的。

答案 1 :(得分:0)

如果使用c语言,则x保留字符串首字符'g'的地址。您可以使用此代码进行打印。

    #include<stdio.h>
    int main(){
    char *x="geeksquiz";
    printf("%c",*x);
    return 0;
    }

输出:g