версия 1указатели и строки в C, различные вопросы
char *cad1="hell";
char *cad2="home";
int j;
cad2=cad1;
for (j=0;j<4;j++){
printf("%c",cad1[j]);
}
cad2[0]='a';
for (j=0;j<4;j++){
printf("%c",cad2[j]);
}
версия 2
char cad1[]="hell";
char cad2[]="home";
int j;
cad2=cad1;
for (j=0;j<4;j++){
printf("%c",cad1[j]);
}
cad2[0]='a';
for (j=0;j<4;j++){
printf("%c",cad2[j]);
}
версия 3
char cad1[]="hell";
char *cad2="home";
int j;
cad2=cad1;
for (j=0;j<4;j++){
printf("%c",cad1[j]);
}
cad2[0]='a';
for (j=0;j<4;j++){
printf("%c",cad2[j]);
}
Вопрос, который у меня есть, поэтому версия 1 вешает Dev C++ ?, версия 2 говорит, что существует несовместимое назначение в cad2 = cad1? и почему версия 3 работает нормально?
Возможный дубликат [C-FAQ: массивы и указатели] (http://c-faq.com/aryptr/index.html) и http://c-faq.com/decl/strlitinit.html – Elazar
1) 'предупреждение: инициализация исключает 'const' классификатор из целевого типа указателя' 2)' несовместимые типы при назначении типа 'char [5]' из типа 'char *' ' –
возможный дубликат [Почему я получаю ошибку сегментации, когда запись в строку?] (http://stackoverflow.com/questions/164194/why-do-i-get-a-segmentation-fault-when-writing-to-a-string) – Lundin