相信大家在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()中先定义好,那么就代表着你已经
给了它固定的内存了,然后后面你将它的地址传入返回,
它的那块内存还是它的,不会消失
本文如有错误,还请大佬指正!!!