C语言返回值问题,求高手指教

自定义一个函数 myrand();要求在a==1时,return “abc”;a==2时,return “abc123”;
之前我定义了一个char myrand(int a); 然后用 if 语句,return “ ”;结果报错,返回char值的长度不定,所以说前面的char 定义函数不对。
谢谢各位的回答,非常感谢!
不知道选谁好了

# include"stdio.h"
char* myrand(int a)
{
if(a==1)
return "abc";
else if(a==2)
return "abc123";
else return NULL;
}
void main()
{
char *a;
a=myrand(1);
printf(a);
}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

# include"stdio.h"
#include
struct T{
char a[20];
};
T myrand(int a)
{
T t;
if(a==1)
strcpy(t.a, "abc");
else if(a==2)
strcpy(t.a, "123abc");
else strcpy(t.a, NULL);
return t;
}
void main()
{
T t;
t=myrand(2);
printf(t.a);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-15
直接返回一个字符串的话,返回值肯定不能设为char类型,可以用字符指针
char * myrand(int a)
{
static char b[]="abc";
static char c[]="abc123";
if(a==1)
return b;
else if(a==2)
return c;
else
return 0;
}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

那可以试下用结构体,参考三楼。

第2个回答  2012-05-15
你定义的函数myrand(int a)返回值是char类型,当你返回的是return ".....";这是不对的
应该定义为 char * myrand(int a){...}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

可以定义数组吗?
把数组作为myrand的实参数
myrand(char buf[], int a);
char buf[10];
myrand(buf, a);
把"abc"或"abc123"拷贝给buf就行了:strcpy(buf, "abc");

第3个回答  2012-05-15
不能返回字符串,就像不能返回数组一样,要返回字符指针,实际返回的是字符串首地址,函数这样声明:char * myrand(int a),然后return "abc";就行了。追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

第4个回答  2012-05-15
#include<stdio.h>
char* myrand(int a)
{
if(a==1)
{
return "abc";
}
if(a==2)
{
return "abc_123";
}
return " ";
}
void main()
{
char *c;
c=myrand(1);
printf("%s\n",c);
c=myrand(2);
printf("%s\n",c);
}

求助大神关于C语言程序返回值的问题
函数返回值是存在内存栈中的,函数名是在代码段,返回值与参数是在数据段,当函数调用执行时就会将返回值压入栈中,int b=A();相当于调用函数,会将返回值弹出,传递给b.就是这样一个过程。并不是说将返回值返回操作系统,而是放到内存栈中。调用时,再弹出给对应的对象。

问一下c语言函数返回值的问题?
在被调用函数里,任何合理的表达式都可以作为返回值, 表达式的结果就是返回值。 就这个问题而言, c的内容就是返回值。 他有权返回什么跟调用它的函数里的一切都毫无关系。对调用它的函数而言, 相当于在调用的位置写一个常量,这个常量的值就是那个函数的返回值。

C语言返回值问题,求高手指教
char* myrand(int a){ if(a==1)return "abc";else if(a==2)return "abc123";else return NULL;} void main(){ char *a;a=myrand(1);printf(a);}

c语言问题,返回值问题,先谢谢了
k在该函数中的类型是int *和该函数的返回值类型int不符,肯定是不能返回k的。其实这个题目出得不是很好,因为main函数中根本就没有使用过fun的返回值,而且这个函数要实现的功能是更改k的值为数组最大值的下标,已经通过传入k的地址达到了目的,根本没必要返回值。理论上只要返回一个int值就可以了,...

C语言中关于返回值的问题,亟待解答。谢谢。
返回值类型是根据用户的需要决定的,需要什么类型的返回值就用什么样的类型 main函数需要向操作系统返回,在新的C语言标准中规定必须用int类型返回值,一般返回值为0,旧的标准中没有硬性规定 标准的库函数返回值可以查看头文件中的函数原型,按规定使用,本质上就是别人替你写了一个常用的函数而已,用...

C语言的返回值问题,请作详细解释
C语言的return语句对应了汇编语言的一条函数调用返回的指令,CPU的寄存器单元里面有一个特殊的专门用来存取函数返回值的寄存器,这条返回指令执行的时候。并不是返回的flag,而是把flag里面的值先复制到了这个特殊的寄存器里面再返回的,而一旦返回,flag这个变量里面的内容就被“销毁”了。大概是这样的,等...

请教c语言中返回值的问题,为什么有的程序有定义调用的函数无RETURN还是...
按引用有两种:地址运算符&,如int b(&a);指针为形参。如int b(int*a);按引用的特点:形参改变后,实参也变!即形参的值改变,实参也变!另外,按引用实际上是通过参数的内存地址提取参数的值去进行操作!所以有时没有return 照样改变!return的作用:返回值函数需要一个返回语句,它是用...

#返回值#C语言中关于返回值问题?
(void) 是个带返回值的main函数,是对系统而言的,我们知道程序的入口是main,系统在调用mian函数的时候可能需要根据main返回的值来判断程序是否正常运行了,return 0; 表示正常退出,而你需要输出的值是对main函数内部而言的,数值通过printf从标准输出设备显示出来,这个和main的返回值是不是一回事呢。

C语言 返回值问题 急求助
如果形参中写成&a,那么在printf中应写为*a

C语言函数返回值问题,新手学习,务请回答详细,一定要讲透彻啊,先谢谢了...
例如上面的程序函数mian要求的是有一个int类型的返回值,但是你不写return 0;这一句编译也可以通过。自动以形参的那里max(int x,int y ) 不可否以成max(int x,y ),参数的传递不同于变量的定义,如果你写成了int x,y那么编译器就不知道你要传入得y纠结是什么,那么就会说你没有定义y。在你...

相似回答
大家正在搜