#include <stdio.h> #include <stdlib.h> /* //以前的写法 int *p = 5; 这个是一种错误的写法,p首先是一个指针变量 int *p,a; p = &a; *p = 5; p是一个指针,指向一个内存地址,你不指明p指向的位置, 程序怎么会知道你要给哪块内存赋值呢?你可以申请一块堆空间给p, 或者直接定义一个变量,让p指向该变量 */ int foo() { int *p; p = (int *)malloc(sizeof(int)); *p = 5; return *p; } int main() { int i = foo(); printf("%d",i); return 0; }