天籁led大灯多少钱一个:请问一个c语言很简单,但是我不会的问题?

来源:百度文库 编辑:高考问答 时间:2024/05/05 19:46:03
#include<iostream>
using namespace std;
void fuzhi(char bbb[10]);
int main()
{
char aaa[10];
fuzhi(aaa);
cout<<aaa;
return 0;
}
void fuzhi(char bbb[10])
{
bbb="hello";
}
哪里错了啊 怎么把他改成按引用调用.
3楼的意思是不是这样?
#include<iostream>
using namespace std;
void fuzhi(char &bbb[10]);
int main()
{
char aaa[10];
cin>>aaa;
fuzhi(aaa);
cout<<aaa;
return 0;
}
void fuzhi(char &bbb[10])
{
bbb="hello";
}

还是报错

你的程序还是错在传值调用和传址调用概念不清。你的程序表面上看是传址,其实是传的地址的值 还是属于传值。所以出了错。帮你改成下面这样就是传址 传的是数组单个元素的地址。
#include<iostream>
using namespace std;
void fuzhi(char * bbb);
int main()
{
char aaa[10];
fuzhi(aaa);
cout<<aaa;
return 0;
}
void fuzhi(char* bbb)
{
char* temp="hello";
while(*temp!='\0')
{
*bbb++=*temp++;
}
*bbb='\0';
}

上面的程序中的函数调用是传值调用,并不会改变实参的值,所以调用函数后aaa的值并不会改变。如果想改变实参的值,可用引用调用,那么函数的形参要改成
char &bbb[10] 这样就可以改变实参的值。

同时,这个程序还可能有一个问题,字符数组aaa没有赋初值。

好久没有研究C了,不知道是不是char aaa[10]没有初始化的关系,传引用调用我记得是定义一个指针指向数组,然后将指针传给函数.