Я пытаюсь понять следующий фрагмент кода, но меня путают между «\ 0» и «\ 0». Я знаю его глупо, но любезно помогите мнеразница между « 0» и « 0»
#define MAX_HISTORY 20
char *pStr = "\0";
for(x=0;x<MAX_HISTORY;x++){
str_temp = (char *)malloc((strlen(pStr)+1)*sizeof(char));
if (str_temp=='\0'){
return 1;
}
memset(str_temp, '\0', strlen(pStr));
strcpy(str_temp, pStr);
заранее спасибо
'char * pStr =" \ 0 ";' Я думаю, это не то, что вы думаете. Вы объявляете указатель и пишете что-то в нем. Это будет адрес, на который он указывает. Сделайте «malloc» там, а затем заполните выделенную память. Или вы можете просто использовать массив символов. –
@KamiKaze Я думаю, 'char * pStr =" \ 0 ";' не то, что вы думаете. Он объявляет указатель, значение которого является ** адресом строкового литерала **, который содержит два nul байта. Не нужно malloc быть правильным. –
@ Jean-BaptisteYunès Mhh, ты заставил меня задуматься. Каково время жизни памяти, в которой находятся два nul байта? –