Что означает char * x = "geeksquiz"? - PullRequest
0 голосов
/ 20 января 2019

Я довольно новичок в программировании.И я часто сталкиваюсь с этой декларацией.Скажем, например:

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 - выродки, а str2 - подделки, если они содержат адресасоответственно?или это заполнитель% s, который инструктирует printf печатать строковые литералы?

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Значит ли это, что x содержит адрес первого элемента строки, то есть символа 'g'?

Да.

isэто заполнитель% s, который инструктирует printf печатать строковые литералы?

Да.

Точнее говоря,% s не ограничен строковыми литералами.Это для печати строк с нулевым символом в конце - какие строковые литералы.Кроме того, он называется спецификатором формата .


. Учитывая, что вы использовали тег, обратите внимание, что выражение char *x = "geeksquiz"; неправильно сформировано в C ++.В C ++ строковый литерал представляет собой массив const char, и он не распадается на указатель на неконстантный char.Он хорошо сформирован в C, потому что в этом языке строковые литералы неконстантны.

0 голосов
/ 20 января 2019

Если это используется на языке c, то x содержит адрес строки первого символа 'g'.Вы можете распечатать его, используя этот код.

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

Вывод: g

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...