Этот код выдает "р = привет мир":Почему мы не можем скопировать строку в Charator Pointer КОГДА мы можем назначить строку непосредственно ей?
#include "stdio.h"
#include "string.h"
int main(){
char *p;
p="hello world";
printf("p is %s \n",p);
return 0;
}
Но этот код выдает ошибку сегментации:
#include "stdio.h"
#include "string.h"
int main() {
char *p;
strcpy(p,"hello");
printf("p is %s \n",p);
return 0;
}
и этот код выдает "р = HELLO"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main() {
char *p;
p=(char*)malloc (10);
strcpy(p,"hello");
printf("p is %s \n",p);
return 0;
}
Тогда зачем это работает? #include #include INT Основной() { символ * р; p = "hello world"; printf ("p is% s \ n", p); return 0; } Выход: p hello world –
aks
Вы не справляетесь ни с чем с p в первом. Вы назначаете адрес этого строкового литерала на p. Вот почему это работает. – Amy
Назначив адрес строкового литерала p, вы указываете местоположение в памяти, на которое указывает p. – jschmier