Почему char * и char ** имеют одинаковое значение?

Это из-за этой строки:

printf ("Hi %s,</br />", $name);

Вы не должны печатать / эхо ничего, прежде чем отправлять заголовки.

2
задан chqrlie 16 January 2019 в 21:12
поделиться

3 ответа

* перед символом означает нечто совершенно иное в объявлении и в теле функции.

int *x; - объявляет указатель на объект int

y = *x; - * разыменовывает указатель x, он противоположен его значению в объявлении. Он устраняет один уровень косвенности, когда в объявлении он добавляет один уровень.

Я думаю, что это причина вашего замешательства.

в вашем примере if (*str1 == *str2) * «убирает» косвенность, и результатом является сам символ (не указатель на указатель)

0
ответ дан P__J__ 16 January 2019 в 21:12
поделиться

str1 указывает на «Эй, ты».

str2 указывает на «Привет! Ты»

*str1 является char по этому адресу . По сути, это первая буква строки: «H». Первая буква str2 также является «H». Следовательно, (*str1 == *str2) является истинным выражением, поскольку ('H' == 'H')

Для сравнения двух строк:

strcmp(str1, str2) - возвращает 0, если одинаковое содержимое, ненулевое в противном случае.

0
ответ дан selbie 16 January 2019 в 21:12
поделиться

Нигде в вашем коде нет **str1 and **str2. Я думаю, вы спрашиваете, почему это правда if (*str1 == *str2)? Этот код проверяет символ , на который указывают str1 и str2. Так как это 'H', в обоих случаях выражение оценивается как истинное.

Если вы хотите сравнить строки в стиле C, вы используете strcmp, который возвращает ноль, если две строки равны.

if (strcmp(str1, str2) == 0)
{
    printf ("HoHoHo!");
}
0
ответ дан john 16 January 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: