我知道getch不是标准的C/C++函数,但我倾向于喜欢它,因为它不需要你在返回之前按Enter键.所以我想知道标准C++中是否有任何具有相同效果的等价物(不要求你按Enter键)?
我在这个网站上已经阅读了类似的问题,但他们的答案都没有说明是否有标准和便携式等价物.
我为什么要在以下代码中*&的类型名称(T*&)之后使用?不是a指向指针的指针?如果是,那我为什么**不用呢?
template <class T> void CreateArray(T*& a, int n)
{
a = new double[n];
}
int main()
{
double* a;
CreateArray<double>(a,3);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我不想激起讨论或任何事情; 我只是好奇是否有任何具体的原因,为什么在C/C++库头文件中的名称开头常常发现次要内容.(例如_x,_y,__ f()等)
我写了一些我学到的基本代码,可以用来定义一个获取枚举值作为构造函数参数的类型,并且有一个成员函数AsString(),它将值作为字符串返回.
除非我包含,否则代码不会编译<iostream>.它会显示一条警告,main说明该类型color尚未声明.为什么在我的代码中包含输入/输出头文件而没有使用输入/输出函数或运算符?
enum ColorEnum {blue, red};
class color
{
protected:
ColorEnum value;
public:
color(ColorEnum initvalue)
{
value = initvalue;
}
std::string AsString()
{
switch (value)
{
case blue:
return "blue";
case red:
return "red";
default:
return "N/A";
}
}
};
int main()
{
color mycolor = blue;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我试图在堆上存储一个字符数组.
以下代码有效
char *array[3];
*array = new char;
Run Code Online (Sandbox Code Playgroud)
还有以下内容
char *array[3];
array[0] = new char;
Run Code Online (Sandbox Code Playgroud)
但不是以下
char *array[3];
array = new char;
Run Code Online (Sandbox Code Playgroud)
我看到的内容*array,array[0]和array.第一个和第二个在分配使用后不包含有效的指针地址,new但第三个包含地址.那么是什么让第三个不起作用呢?其他两个如何工作,而他们似乎只是存储一些未知的符号(如$,%, - )而不是指针的实际地址?