【问题标题】:What does char *x = "geeksquiz" mean?char *x = "geeksquiz" 是什么意思?
【发布时间】:2019-01-20 13:31:43
【问题描述】:

我对编程很陌生。我经常看到这个声明。 比如说:

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 ,如果它们分别保存地址?还是指示 printf 打印字符串文字的占位符 %s ?

【问题讨论】:

标签: c++ c pointers


【解决方案1】:

这是否意味着 x 保存了字符串的第一个元素的地址,即字符 'g' ?

是的。

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

是的。

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


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

【讨论】:

    【解决方案2】:

    如果在 c 语言中使用,则 x 保存字符串第一个字符 'g' 的地址。您可以使用此代码打印它。

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

    输出:g

    【讨论】:

    • 如果我需要打印字符串的其他字符怎么办?
    • 如果要打印字符串的其他字符,如果要打印第二个字符,则增加指针,然后写 printf("%c",*(x+1);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2020-03-18
    • 2021-08-02
    • 2020-10-02
    相关资源
    最近更新 更多