0
比方說,我們有如下代碼:什麼是從一個函數調用的返回值,如果該功能並沒有真正提供一個
int func(char str[], int len) {
// Don't return anything here.
}
int main() {
char str[] = "Hello";
int result = func(str, strlen(str));
printf("%d\n", result);
}
它將打印我的計算機上的某些字符串值-1679929632。我執行時會不時變化。
任何人都可以解釋爲什麼會發生這種情況?
這是未定義的行爲。它可能是任何事情或崩潰。 – 2015-01-21 05:10:09
這個值是從StackFrame讀取的嗎?這有什麼潛在的價值?一些局部變量或返回地址? – 2015-01-21 05:11:39
這可能會幫助你理解:http://stackoverflow.com/questions/12376461/what-actually-happens-when-a-function-with-the-warning-control-reaches-end-o值通常是無論發生什麼位於用於返回該類型值的寄存器中。 – 2015-01-21 05:14:06