http://blog.csdn.net/u012627502/article/details/3579724
1)以返回值方式返回:把动态分配的存储位置地址,赋值给指针类型返回值(不同于被调用函数的自动变量地址)
2)以形参形式返回:二级指针类型做形参
3
4 void fun(int* p){
5 p = (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 fun(p_int);
11
12 printf("%d\n", *p_int);
13 return 0;
14 } //段错误
--------------------------------
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int* fun(void){
5 return (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 p_int = fun();
11
12 *p_int = 12345;
13
14 printf("%d\n", *p_int);
15 free(p_int);
16 return 0;
2 #include <stdlib.h>
3
4 void fun(int** p){
5 *p = (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 fun(&p_int);
11 printf("%x\n", p_int);
12 return 0;
1 #include <stdio.h>
2 #include <stdlib.h>3
4 void fun(int* p){
5 p = (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 fun(p_int);
11
12 printf("%d\n", *p_int);
13 return 0;
14 } //段错误
--------------------------------
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int* fun(void){
5 return (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 p_int = fun();
11
12 *p_int = 12345;
13
14 printf("%d\n", *p_int);
15 free(p_int);
16 return 0;
17 }//以返回值的方式返回动态申请的内存地址
---------------------------------
1 #include <stdio.h>2 #include <stdlib.h>
3
4 void fun(int** p){
5 *p = (int*)malloc(sizeof(int));
6 }
7
8 int main(){
9 int* p_int = NULL;
10 fun(&p_int);
11 printf("%x\n", p_int);
12 return 0;
13 } //通过传入参数二级指针返回
----------------------------------
不可以把局部变量的地址赋值给指针类型的返回值(生命周期决定的)
同类型结构体变量之间可以直接赋值。