当一个函数的返回值为指针类型时如何调用
#include "stdio.h"
#include "string.h" //这里记得要引用这个库,这是strcpy的头文件
char* GetFileName()
{
char filename[20] = "file_0001.dat"; //这块不能用filename[],
//没有这种类型,那种形式只能做为函数参数来使用,不能用在变量声明
//这里声明的filename是一个局部变量,退出函数时将被编译器收回分配的空间
strcpy(filename,"file_xxxx");
return filename; //由于filename是一个局部变量,退出函数时将被编译器收回分配的空间
} //所以返回的时候将失败
void main()
{
char* s;
s = GetFileName();
printf("%s
", s);
}
如果想返回一个有效的地址,那么就用malloc吧
#include "stdio.h"
#include "string.h" //这里记得要引用这个库,这是strcpy的头文件
#include "stdlib.h"
char* GetFileName()
{
char *filename = (char*)malloc(20); //这里用的是malloc动态分配的地址.这样退出函数时将不会收走指针
strcpy(filename,"file_xxxx");
return filename;//这时filename是动态分配的地址,所以退出函数时不会被收回空间
}
void main()
{
char* s;
s = GetFileName();
printf("%s
", s);
free(s);//用完指针记得收回
}
上面的两个实例我都有注释.希望你能明白.
如果还有什么不明白加我百度HI吧.
你把head从函数里面拿出来,作为参数就可以了啊。
之前需要定义一个函数指针:typedef struct _Node (*Fun)(struct _Node *p);
然后定义show函数:
void show(Fun fun, struct _Node *head)
{
struct _Node *pTemp = NULL;
pTemp = fun(head);
}
这样就可以把head传进来了~
调用方式:
type * var; //定义一个与返回值类型相同的指针变量
var = function(); //执行函数,并将返回值赋值给变量var
cout<<*var; //输出指针所指向的值,C语言输出用printf()函数
或:cout<<var[i]; //若指针指向数组变量的,则通过此形式输出或调用其值
返回指针的函数必须保证退出函数后该指针的目标原则上没有消亡
方法1,直接赋值给另一个同类型指针
方法2,直接加上指针运算符*在赋值号左边对指针所指目标间接访问
C++的函数返回值是什么意思 通俗点讲
C++的函数返回值是由于函数名变量通常用来把函数的处理结果数据返回给调用函数,即递归调用,所以一般把函数名变量称为返回值,函数的返回值类型是在定义函数时指定的。函数可以有返回值,也可以没有返回值:1、没有返回值的函数:功能只是完成一个操作,应将返回值类型定义为void,函数体内可没有return...
函数的返回值是什么意思
返回值 就是通过程序计算之后的到结果,也是函数实现返回最终的结果函数(方法)一般分为有返回值和无返回值,无返回值实现功能最终不返回结果,有返回值的,最终返回该函数的计算结果。
C函数一般返回“1”表示函数成功结束,还是返回“0”表示成功结束?_百度...
来看看这个可能对你有点启示:if(!create()) ...这个东西表示如果创建不成功则...所以create()地返回值为0时表示不成功比较多。但是在C++下面的主函数不是这个定义的。而是返回0表示成功。这个因为这个返回值将会返回给系统告诉系统这个程序是不是正常结束。返回不同值有意义,所以才采用返回0表示成功...
C语言 对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF
fgetc()返回值: 成功时为作为 unsigned char 获得并转换为 int 的字符,失败时为 EOF 。最后一个字符,如果读入成功了就返回这个“字符”。然后继续往下读(此时已经都读完了,后面没有了),读取失败 返回的才是EOF,设置 stream 上的文件尾指示器(feof()),若是其他(非读到文件尾)原因导致...
怎么使C语言的函数返回值为一个数组
strcpy(pText1, "love");strcpy(pText2, "you");return;} void Caller() \/\/ 这个函数调用SubFunction { char szText1[5], szText2[5]; \/\/ 当然这里也可以动态分配内存 SubFunction(szText1, szText2); \/\/ szText1, szText2就是带回的值 TRACE("%s %s\\n", szText1, szText2);...
一个函数的返回值由( )确定. A. return语句中的表达式B. 调用函数...
B,函数在声明时有类型比如 int add();,表示返回类型为int ,void,表示无返回值
C语言里return 0和return 1什么意思
return代表调到函数外,return0代表函数正常终止 return1代表函数非正常终止 return关键字的作用是返回程序流程的控制权!其副作用是返回一个值。例如intmain(){}则必须返回一个值 return0代表函数正常终止 ruturn1代表函数非正常终止 被调函数return1只是给主调函数一个标志,说明他的执行过程遇到异常...
c语言中函数名就是一个指针吗
是的。函数指针就是函数的指针,它是一个指针,指向一个函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。例:A)char*(*fun1)(char*p1,char*p2);B)char**fun2(char*p1,char*p2);表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针。C)char*fun3(...
若一个函数的返回类型为void,则表示其没有返回值?
是的,c, c++, java, objective-c都是这样理解的,void表示空,即没有返回值
使用Function语句定义一个函数过程,其返回值的类型( )。
【答案】:D D。【解析】VBA中的函数在定义时可以使用As指定函数返回值的类型,若没有指定类型则默认为变体型。
终征先普: 指针函数
名山县19843017517: 当函数中返回值为值,指针,引用时,是如何带 - ?
终征先普: 这是你定义的为题了,A是个二维数组,你所定义的指针只能用来表示一维数组,所以才会出现问题
名山县19843017517: C语言函数的返回值为指针时的问题 - ?
终征先普: week_day作为lookstr()的参数,经过函数lookstr()提取之后,return(table[day]),得到一个静态字符串的指针;输入数字有误情况下return(NULL).
名山县19843017517: 当函数体返回值是指针时,必须返回空指针吗? - ?
终征先普: 不一定.如果必须要返回空指针,那么函数体返回指针就没有意义了.实际上可以返回任意指针值,不过要注意,不要返回局部变量的地址,这样在函数退出后局部变量释放,使得返回的成为野指针.一般可以返回:1 动态申请的内存2 静态变量或全局变量的地址3 参数传入的地址.
名山县19843017517: 定义一个返回值类型为指针类型的函数,该函数功能是求两个整数中大的那个值. - ?
终征先普: #include <stdio.h> int *mx(int *a,int *b) { return *a>*b?a:b; } int main(void) { int a=10401,b=10402; printf("%d\n",*mx(&a,&b)); return 0; }
名山县19843017517: 函数的返回值怎么指向该函数本身类型的函数 - ?
终征先普: “让函数返回一个函数指针,该函数指针的类型与该函数相同”,这个问题理论上是无法通过正常途径完成的,因为这是一个递归定义过程,即定义的前提用用到了定义本身. 但,就你这个问题来说还是有办法完成的,那就是使用强制类型转换,即将drink函数名强制转换成指定的类型,drink函数的写法为: int (*drink(int)) (int i) {cout< return (int(*)(int))drink; }
名山县19843017517: C语言中,定义一个函数时,要返回的是指针,该怎样表达呢?谢谢 - ?
终征先普: 你把返回值写成指针型就可以了,具体得看你参数是怎样的,还有返回值是什么类型的指针:比如:int * scar(int ) 这个函数参数是一个整型,返回值是个整型指针.类比你可以写出来其他类型的函数
名山县19843017517: C++ 如何返回一个函数指针? - ?
终征先普: int f (int a, int b) { return 0; } int (*Test ()) (int, int) { return f; }(*Test ()) 为函数部分 *代表返回一个指针类型 Test函数名 ()里面是参数列表 而 int (int, int) 为助记符 修饰返回的指针为一个特定类型的函数指针 另外 可以用函数原型作为参数传递 编译...
名山县19843017517: C语言怎么让“函数”返回“指针数组” - ?
终征先普: 首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁.如果你想这样返回一个数组的话,你应该malloc出一个数组来返回. 至于应该return什么,return (malloc出来的那个指针)就可以了. 例如 int** foo() { int **p = (int **)malloc(sizeof(int *)*10); ... ... ... return p; } 这个p指向一个内存段,这个内存段存有十个int*类型的元素.
名山县19843017517: 怎么调用一个函数返回一个指针,其定义的返回类型怎么定义!?? - ?
终征先普: 返回类型定义成指针型就可以了.举个简单的例子,虽然这个例子没什么意义哈.char * f(char *s, int i) { return s+i; } 这个例子很简单,就是返回字符串s中第i个位置的字符指针.调用的时候:例如char s[100]; strcpy(s,"abcd");char *p = f(s, 2);这样p就指向s中的c那个字符的位置