Так что я попробовал этот кодМанипулирование символьные массивы с помощью указателей в C
#include <stdio.h>
int main(void)
{
char string[] = "hello world";
char *my_ptr = string;
*my_ptr='Y';
printf("the first char of string is %c", *my_ptr);
}
OUTPUT_1: -
the first char of string is Y
Теперь, если я хочу, чтобы напечатать полный scentence в строке ("Yello мир «). Для этого я изменил 7-й линии в: -
printf("the whole string is %s", *my_ptr);
OUTPUT_2: -
Segmentation fault (core dumped)
Но если я пытаюсь изменить его к этому: -
printf("the whole string is %s", my_ptr);
OUTPUT_3: -
the whole string is Yello world
Может ли кто-нибудь объяснить мне, почему второй случай терпит неудачу? И
Почему третий случай печатает правильно?
Из моего понимания * my_ptr (а также my_ptr оба) имеет адрес первого места, так почему первые один сбой в печати полной строки, в то время как второй один делает хорошо. Я начинающий, поэтому он поможет, если вы сможете подробно объяснить причину такого поведения в этих случаях.
Большое спасибо. Вы написали: «my_ptr» имеет «тип char *». Это потому, что мы объявляем это «char * my_ptr » – Sunita
Да, действительно, это так. – Intrepidd