我對C的非常基礎知識有疑問。有人可以澄清這段代碼嗎?
- 我寫了下面的代碼。在這裏
add()
函數,我沒有返回任何東西,所以我期望輸出將是一些垃圾值或某事,但它不會發生這樣的事情。任何人都可以向我解釋爲什麼會發生這種情況?如果我在代碼中寫錯了,請原諒我。 - 據我的理解,我認爲變量
add1
的內存將來自堆棧,因此一旦完成add()
,所有分配的內存將被釋放,因此將顯示一些垃圾值。 - 我明確的疑問是沒有返回任何東西,它如何打印正確的值?
代碼示例:
main() {
int x = 4, sum;
int n;
printf(" enter a number \n");
scanf("%d", &n);
sum = add(x, n);
printf(" total sum = %d\n", sum);
}
add(int x, int n) {
int add1 = 0;
add1 = x + n;
//return(add1);
}
這是未定義的行爲。嘗試並理解到底發生了什麼並不是很有成效。無論你看到什麼行爲都是不可預測的 - 它可能會根據操作系統,編譯器,程序中的其他(甚至不相關的)代碼等而改變。 – kaylum
使用什麼編譯器? gcc無法編譯此代碼 錯誤:ISO C++禁止使用無類型的'add'聲明[-fpermissive] – Evgeniy
@Evgeniy:指出不同語言的作用是無用的。 C不是C++不是C. – Olaf