1樓:匿名使用者
函式內部問題,第乙個函式有個char a[9],函式結束後a所表示的位址就沒了,然後你主函式中的a就指向了乙個「沒了」的位址,就顯示亂碼。而第二個函式由於p是string型別的,它不單單是指向,而且真正的複製了。所以a[9]的內容依舊儲存在p中,儘管a在這裡也「沒了」。
2樓:匿名使用者
#include
#include
#include
using namespace std;
就可以了 ,因為char a[9]在你執行完test(a);
之後就被釋放了所以記憶體裡東西被清空了,輸出亂碼。
3樓:河蟹和諧河蟹
用char **p試下。。
4樓:
因為實參a是指向陣列char a[9]的,而char a[9]是區域性的,所以作用域結束後,a就指向未知的地方了,你改成static char a[9]就可以正常輸出了。
5樓:
a[10]在棧中分配空間,函式返回的時候,a空間不再可用(儘管上面還殘存這一些資料),所有會輸出一些亂碼
而在第二個程式中,p=a意味著a給p賦值(p不是指標),所有p在函式返回的時候擁有著a的乙份拷貝,因而能正確輸出
6樓:徐光豬
#include
#include
using namespace std;
char a[9];//定義成全域性變數,不然會釋放
c語言中字元陣列和字元指標的問題
在函式內 char陣列被定義成局 部變數,函式執行後會被系統給釋放掉。但char p 則是定義成乙個常量,程式執行完後才會釋放掉。所以在返回char p 時會返回亂碼,但 char p 則可以全部顯示出來 當然 char 也可以定義成靜態變數 這樣就可以顯示出來了不如static char p he...
關於雙系統的問題?鬱悶高手來指點
因為windows xp下不能直接安裝windows 98,所以必須首先用windows 98啟動盤啟動電腦 當然前提是在cmos中設定先從a盤啟動 然後把windows98安裝到windowsxp以外的分割槽中。重啟系統後,你會發現並沒有雙啟動選單,系統直接進入了windows 98。首先在bio...
初學C語言字串指標陣列的問題,關於C語言字串指標陣列的問題
樓主可以分別執行下這兩個程式 include void main void include void main void 第乙個無法執行,為什麼?因為 s abc abc 是從靜態儲存區域所分配的記憶體,所以導致s 0 無法改變,所以 abc 為常量字串 ps 常量字串的內容是不可以被修改的 第二個...