您的位置:首页 > 其它

函数返回一个指针

2016-02-28 20:04 141 查看
函数返回一个指针:

#include <stdio.h>

/**
照理说,这样是不可以的,是有问题的,因为在a传递进来的时候,a是有值的。
但是返回的时候a已经销毁了。这个地址也不复存在了,这个到后面讲到内存的时候会具体详解。

值的注意的是 这个 function1 返回的是一个 int* 是一个 返回int型指针的一个指针变量。

返回的是一个指向int型数据类型的指针
*/

int *function1(int a){
return &a;
}

/**
不存在错误的回调,这个 可能有另外的分配方式,可以成功的返回这样一个指向字符数组类型的指针,指向“one” “two”“three”“anything”
当然也可以写一个有错误的回调:

值的注意的是 返回的是一个 字符数组类型的指针
*/
char *function2(int a){
if (a == 1)
return "one";
else if (a == 2) return "two";
else if (a == 3) return"three";
else return "anything";
}

/**
这个就是有bug的回调,因为 在要返回的时候 这个 开辟的空间已经消失了,不再存在这个 buf了,所以 这个 是有问题的,但是不影响返回

值的注意的是 返回的是一个字符数组类型的指针
*/
char *function3(int a){

char buf[10];
if (a == 1) strcpy(buf, "one");
else strcpy(buf, "anything");
return buf;
}

int main(){

int *b = function1(3);

printf("%d", *b);

getchar();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: