1樓:
解釋如下:
因為q宣告的是一個區域性變數,所以在函式呼叫結束後它所開闢的記憶體空間就會被系統收回
它裡面的內容也就銷燬了,因此它輸出的是一段亂碼!
改下程式
#include
#include
#include
char *t;
char * copy(char *p,int m)void main()
2樓:歪歪閒置
輸出的是什麼?一起貼上看起來快一點
3樓:匿名使用者
一開始你宣告瞭一個指標char* t, copy()之心完以後返回t,然而t指向的char q[80]是一個臨時變數,copy()執行完以後系統就把它釋放了。
4樓:匿名使用者
#include
#include
char *t;
char * copy(char *p,int m)void main()
5樓:
原因:在copy函式裡,j 沒有賦初值,導致了陣列越界,程式編譯不會錯,但不會得到正確值。
解決方法:int i,j = 0;
這樣還不夠,在你定義字元陣列時,最好給它一個初始化,不然裡面全是亂七八糟的東西。
不信?那你執行下面一個**:
#include
int main()
為了避免錯誤,你應該這樣:
for(i = 0; i < 80; i++)q[i] = '\0';
這樣就不會錯了。
c語言函式返回值,c語言的函式返回值?
這個跟庫函式的定義有關。還有就是編譯器的差異。有些編譯器預設是非0為真,有些非 1為真。建議不要使用這麼簡單粗暴的辦法判斷。請使用c提供的標準巨集判斷。在 學的。呃。自己寫 寫多了自然就知道了 根據你的程式來看應該是一個void型,不過你這是一個交換資料函式,如果這樣傳進來,是修改不了原址的 而如果...
C 函式返回引用問題,c 函式返回引用問題
include using namespace std int a int index int i 這裡需要申明一下 否則main不能呼叫index函式 int main index 2 25 cout 返回引用 1 主函式main的返回值 這裡提及一點,返回0表示程式執行成功。2 返回非引用型別 ...
C語言指標問題,C語言指標問題
include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...