【发布时间】:2018-10-06 05:37:35
【问题描述】:
我正在尝试理解 C++ 中的 指针,但我目前对以下内容感到困惑:
char input_line[] = "hi?";
char* p;
p = &input_line;
while (*p)
{
cout << *p << endl;
*p++;
}
我一定会在这里感到困惑,因为我认为这表示将 1d 数组的地址分配给 指针;但是,当我尝试编译它时,出现错误:error: cannot convert char (*)[4]' to 'char*' in assignment p = &input_line;
看来我应该这样做:
const char input[] = "test?";
int quest_count = 0;
const char *i = input;
while(*i){
cout << *i << endl;
*i++;
}
这对我来说没有意义,因为您将 char array 分配给存储地址的 char pointer。
【问题讨论】:
-
This doesn't make sense to me because you are assigning a char array to a char pointer这是有道理的,因为数组衰减为指针。 -
p = &input_line;尝试将“指向char数组的指针”分配给“指向char的指针”。这些类型是不兼容的。你的意思是写p = input_line;? -
在大多数情况下,数组名被转换为指针。
-
p = input_line可以工作 -
在 C++ 中既不使用指针也不使用数组。没有理由这样做,因为现在有更好的选择。