相信大家在C语言中写一些函数的返回值用到了void,int,char,double等等,但是好像没有遇到数组类型的,确实在C语言直接返回数组类型,是会报错的。具体的原因只要大家学习了指针还是可以理解的(其实是我懒得说,哈哈哈),话不多说,直接进入正题!
我想写一个函数,可以用来将十进制数转换成二进制数(当然了,有很多种方法),但是我当时只想到了一种,就是传入一个十进制数,根据转换规则,转换成二进制,并且二进制数我用字符数组储存,当时我就想那么这个函数的返回值是个字符数组喽,于是开始漫长的探索(一直报错啊,哈哈哈)。
下面这是正确的代码:(说是C语言,只不过我习惯c++了,大不了输出输入头文件你改下蛮...)
#include<bits/stdc++.h>using namespace std;int n,b;int a[20009];int sum;int ans;//表示当前处于的高度char *er(int x,char *s){//返回的是x的二进制数int i=0;while(x){if(x%2==0){s[i]='0';}else{s[i]='1';}x/=2;i++;}return s;}int main(){cin>>n;char s[10];char *b;b=er(n,s);//int l=strlen(s);for(int i=l-1;i>=0;i--)cout<<s[i];//cout<<endl<<s;return 0;}
关于指针的知识我就不多说了,这里我为什么要在main函数中还要定义下 s 呢,假如你没有定义,那么他就是属于er()函数中的,是个局部变量,到了main()函数不就没了吗?可是你将它在main()中先定义好,那么就代表着你已经给了它固定的内存了,然后后面你将它的地址传入返回,它的那块内存还是它的,不会消失
本文如有错误,还请大佬指正!!!
如果觉得《C语言中自定义函数返回数组类型》对你有帮助,请点赞、收藏,并留下你的观点哦!