我想了解如何通过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