我想了解如何通過C語言參考傳遞參數。 所以我寫這個代碼來測試參數傳遞的行爲:瞭解通過參考動態分配傳遞參數
#include <stdio.h>
#include <stdlib.h>
void alocar(int* n){
n = (int*) malloc(sizeof(int));
if(n == NULL)
exit(-1);
*n = 12;
printf("%d.\n", *n);
}
int main()
{
int* n;
alocar(n);
printf("%d.\n", *n);
return 0;
}
在這裏被印刷:
12. 0.
實施例2:
#include <stdio.h>
#include <stdlib.h>
void alocar(int* n){
*n = 12;
printf("%d.\n", *n);
}
int main()
{
int* n;
n = (int*) malloc(sizeof(int));
if(n == NULL)
exit(-1);
alocar(n);
printf("%d.\n", *n);
return 0;
}
它印刷:
12. 12.
Wha t是這兩個程序的區別?
指針不是整數。你的格式說明符應該是'%p',而不是'%d'。在你的第一個例子中(現在你明白了爲什麼),'n'永遠不會被初始化,所以使用它會給你一個未定義的行爲。什麼事情都可能發生。 – GManNickG 2010-11-11 20:46:16
正確的單位化指針,但格式說明符本身在這些示例中是正確的。 – Kos 2010-11-12 13:37:00