Как получить указатель на строку в C, используя оператор ссылки? - PullRequest
1 голос
/ 12 июля 2011

Есть ли в любом случае строка типа "my example\n", чтобы получить указатель на нее?Например, &"my example\n" или &{"my example\n"}?

РЕДАКТ.Ну, в любом случае, спасибо за вашу помощь.

Ответы [ 4 ]

4 голосов
/ 12 июля 2011

Это уже указатель:

char *string = "my string\n";

string будет указателем на буквальную строку.

3 голосов
/ 12 июля 2011

Это уже адрес.

Пример: char * addr= "my example\n";

Здесь переменная addr содержит адрес строки.

1 голос
/ 12 июля 2011

Чтобы быть более строгим: строковые литералы имеют тип const char[].Однако const char[] может быть неявно приведено к const char*.Таким образом, вы можете легко получить указатель, назначив

const char* p = "string";

Обратите внимание, что если ваша следующая строка будет

const char* p1 = "string";

- значение p1 не обязательно будет равнок значению p: разные строковые константы могут иметь разные адреса (но не обязательно).

Обратите внимание, что p будет указателем на первый символ, а не на всю строку.

Еще одно предостережение: вам не следует пытаться получить указатель char* (отбрасывая const), поскольку это приведет к неопределенному поведению.Например, компилятор может поместить строковый литерал в постоянную память, и программа просто рухнет.

1 голос
/ 12 июля 2011

Для вашего кода строковая константа отображается в виде указателя; в частности, символьный указатель char * на первый символ в строке.

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