【发布时间】:2013-11-01 20:04:35
【问题描述】:
我正在尝试将 char & 值传递给函数中的 char * 参数,但它不起作用,如下所示:
#include <iostream>
using namespace std;
void change_sugar(const short& sugars, char* LOC);
int main()
{
static int caga = 0;
const short* mysweets;
char& lala;
change_sugar(mysweets, lala);
}
void change_sugar(const short& sugars, char** LOC[])
{
if (sugars == 3000)
LOC[1] = 5;
cout << "Sugar is not nCaga, nor caga" << " ___ !@S ";
cerr << "nCaga failed!";
}
错误输出:
错误:
'lala'声明为引用但未初始化
我正在尝试将引用传递给相同类型的指针。它是否正确?
请耐心等待,我是 C++ 新手,我认为我正确阅读了有关指针和引用的教程。
额外:我认为我使用不同的编译器 Turbo 16 进行了尝试,但它抛出了其他十个错误,所以我不知道这是否是编译器问题。
【问题讨论】:
-
我意识到传递引用是没有用的,但我只是想练习正确获取指针和引用,所以我一直在“玩弄”这些东西,直到我使用它为止。
-
您的第一个问题不应该是“为什么需要初始化引用变量”吗?
-
引用必须在创建区域时绑定(初始化);创建引用后无法更改绑定。您的编译器正确地抱怨。并且
char &不可能合法地传递给期望char **[]的函数。在最好的情况下,这是一个令人讨厌的函数参数——查看三星级程序员了解原因。 -
change_sugar()的定义与前面的声明冲突。你声明它取char *LOC,但定义说char **LOC[],相当于char ***LOC。我很惊讶你没有收到关于这方面的错误。 -
它需要一个 char *,而不是三重指针!