㈠ c语言怎么返回字符串数组
1、在void
strcat()的strcat前添加*,表示返回char
指针。
2、strcat()应该返回str1,即
return
str1。str1是连接的结果,调用者有责任确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。
㈡ c语言中函数返回值可以是数组、字符串和结构体吗
//语法编码规则的角度看
ANSIC语言标准,明确规定数组类型和函数类型不可以做为返回值。
解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。
结构体类型可以做为返回值,我猜测C语言设计者当时引入struct结构体的概念,目的是为了增加一种建立C语言新类型的机制,换句话说它希望通过struct建立的类型,像内置的int float类型一样使用方便。
//从汇编角度来看
有两种返回值方法,第一种是直接返回到寄存器的,第二种是类似于结构体返回值的那样建立临时存储区的返回方式
比如int 返回值类型、指针返回值类型,在ia32平台上都是直接返回到eax寄存器不管是vc还是gcc,对于像float 类型的浮点返回值类型,在ia32平台,往往借助于fpu浮点运算器部件中的寄存器存储于栈中,第三类就是像struct结构体返回值,它需要建立临时对象,对于c语言来说引入一个临时内在区域是问题不大的,但是对于c++这个有时候是致命的。
我是菜鸟,希望能帮到你,观楼主英俊潇洒,风流倜傥,必当世豪杰,诚邀加入0x30网络贴吧,共商义举,建不世之功!
㈢ C语言里怎么让函数的返回值为一个二维字符串数组
返回一个指针:
int **a(void)
{
static int c[5][5]={0};
return c;
}
㈣ C语言如何返回字符串
new 是动态分配(在堆上分配),你向系统要了 50 B 的内存,如
char* str=new char[50]; // 50 * 1B
堆上分配就是这情况,你不释放(delete一下),它就认为你在用着;不会再给别人用
如果给你的你不用了,或是你把它给忘记了,那就算是内存泄露了、
当然,你程序退出的时候,系统会替你回收、不过这样的习惯不好,你想,如果你写了死循环(操作系统、服务器程序等)、那里面不断滴在内存泄露,你就危险了、后来发现,不知不觉,内存怎么就不够用了,明明自己用的不多啊、、
修改一下:
char* fanhui()
{
static char str[100]; // 局部变量,静态局部变量,它在第一次调用的时候分配,
cin >> str; // 函数返回了,str的空间还是存在的,也就是不会重复申请、
return str; // 而且,函数外面通过,指针也是可以访问他们的、、
}
而
char* fanhui()
{
char str[100]; // 局部变量,默认动态局部变量,它在每一次调用的时候分配,
cin >> str; // 函数返回了,str的空间也就不存在了,他是在,栈,上分配的、
return str; // 函数外面通过,指针想访问?、非法!!!人都不在了,你喊他干嘛啊??
}
㈤ C语言系列之C语言如何返回字符串数组
C语言实现返回一个字符串数组,是没有这种功能的,但是可以用指向数组的指针来实现:
解释:
char **p 这个p就是指向数组的指针,它指向一个数组的起始地址.
想要引用里面的数组时,直接使用p[i] 即可。
我们知道C语言里面的各种数组,本质上都是指针,并且函数其实也是不能把数组当作参数的,实际上都是把数组的地址传进去了,实际上就是指向数组地址的指针。
实现
这样返回的P就是指向数组的指针了,实际上就是一个字符串数组
函数解释:
函数返回一个字符串数组,实际上就是指向数组的指针,传进去的是返回的数组的大小以及一个字符串数组,用来处理数据用。
㈥ C语言读取文件如何返回一个数组
c语言没有直接读取返回数组的函数。
看你问题里文件内容格式是:一行一个字符串回车换行。
那么,用fgets一次读一行,你写循环调用这个fgets函数把读取的值放在数组里。
至于你说的数组长度宽度不定,在c里需用malloc动态申请内存。
方法1:用fseek和ftell获取整个文件字节数,然后用malloc申请一个整个文件大小的内存地址(二维数组在内存中就是一维)。然后在循环中每次读取一行到这个地址并计算一行长度,利用指针移得到每行首地址,最后所有行指针组成二维数组(行数也是动态申请)
方法2:你定义一个比较大的字符数组,作为零时存储变量,每次循环中读取一行到这个数组,再用strlen计算字符串长度,再用malloc按照这个长度申请一组地址(一行),并利用strcpy转移内容,最后组成二维数组。
方法3:直接用malloc申请很大的二维数组,循环读取获取内容后,strlen获取每行实际内容的长度。最后用realloc根据实际宽度和行数修改数组大小。
㈦ c语言如何返回一个数组
只能返回一个数,数组不能返回,以数组为函数参数传给形参时,由于是数组名传递(地址传递),实参和形参共用一段内存,对形参更改时实参的值也会改变,所以不需要返回值
㈧ c语言 return字符数组问题
#include<stdio.h>
char*pdNum(char*p,int i);
intmain(){
inti;
charr[10];
char*p;
p=r;
printf("请输入你要查询的成绩: ");
scanf("%d",&i);
if(i>=0&&i<=100){//判断是否为有效成绩
printf("%s ",pdNum(p,i));}
else
printf("Error ");
return0;
}
char*pdNum(char*p,inti)
{
if(i>=85){
p="good";}
if(i<85&&i>=60){
p="General";}
if(i<60&&i>=0){
p="Bad";}
returnp;
}