所以我試圖扭轉一個字符串,但我得到一個內存故障。 s和s1的存儲器初始化足以容納'/ 0'字符。內存故障和指向字符串的指針
有趣的是,如果我刪除* s = * s1並打印s1而不是程序工作。 但是我甚至沒有在s1的末尾設置「\ 0」字符,所以它甚至不知道在哪裏停止打印?
而在下面的情況下究竟是什麼問題?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(void)
{
char *s = "abcdefghijklmnop", *s1=malloc(17);
int i;
for(i=0;i<strlen(s);i++)
{
*(s1+i) = *(s+strlen(s)-1-i);
}
*s=*s1;
printf("%s",s);
}
你認爲'* s = * s1'和's = s1'之間的區別是什麼? –
前者取值s1指向並將其放在地址s中指向,而後者指向s1指向 – CodeChef123
@ScottHunter:好的,我明白了爲什麼應該起作用。但是* s1 * s1 – CodeChef123