Shi*_*hiv 4 c arrays string reverse pointers
void reverse(char *str){ int i,j; char temp; for(i=0,j=strlen(str)-1; i<j; i++, j--){ temp = *(str + i); *(str + i) = *(str + j); *(str + j) = temp; printf("%c",*(str + j)); } }int main (int argc, char const *argv[]) { char *str = "Shiv"; reverse(str); printf("%s",str); return 0; }
当我使用char*str ="Shiv"时,我的反向函数的交换部分中的行,即str [i] = str [j]似乎不起作用,但是如果我将str声明为char str [] ="Shiv",交换部分有效吗?这是什么原因.我对这种行为感到有些困惑,当我试图运行程序时,我不断收到"Bus error"消息.
Sim*_*son 16
使用时char *str = "Shiv";,您不拥有指向的内存,也不允许您写入内存.字符串的实际字节可以是程序代码中的常量.
当你使用时char str[] = "Shiv";,4(+ 1)个char字节和数组本身就在你的堆栈上,你可以随意给它们写信.