2014-07-05 33 views
0

問題在哪裏?當運行時,應用程序崩潰...C - 運行此應用程序時崩潰

#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 

void test(char* x) { 
    (*x)++; 
} 

int main() { 
    char* x = "xD"; 
    test(x); 
    puts(x); 
    getch(); 
    return 0; 
} 
+0

請給出更多細節。它如何崩潰?執行此代碼時會發生什麼?你想要做什麼? – kjaquier

+1

您已更改字符串文字。 – BLUEPIXY

+0

在C中搜索字符串文字... – mafso

回答

2

您要修改字符串常量存儲在只讀存儲器ADRESS,因爲char* x = "xD";聲明一個指針類型的數據。相反,使用這個char x [] = "xD";,那不是一個指針,它是一個你可以修改的數組,因爲它存儲在堆棧中。或者如果你想使用一個指針,你需要爲它分配內存。

1

它在該行崩潰(*x)++;因爲x指向一個只讀存儲器,由於定義char* x = "xD";

將其更改爲char x[] = "xD";。所以x是一個數組,it's值可以改變

相關問題