【发布时间】:2017-09-15 02:58:19
【问题描述】:
我是 C++ 的初学者。指针让我很困惑。特别是关于如何在函数和数组中使用它。我试图在函数中创建一个指向数组的指针并输出它。但是它一直给我数组的地址而不是值。
void testing(int* arr){
cout << arr << endl;
}
int main()
{
int my_arr[]{ 4,7,1 };
testing(my_arr);
string y;
getline(cin, y);
return 0;
}
我尝试使用testing(&my_arr); 输出值,但它给了我错误:
- “int (*)[3]”类型的参数与类型的参数不兼容 "int *
- 'void testing(int *)':无法将参数 1 从 'int (*)[3]' 转换为 'int *'
非常感谢您的帮助!
【问题讨论】:
-
这个错误告诉你你需要知道的一切。
int*不是指向 int 数组的指针。 -
你确定你没有用
testing(&my_arr);调用函数吗?这就是错误对我的建议。 -
@KenY-N 您是说
int*与指向 int 数组的 指针 相同吗?你错了。指向 int 数组的指针是int**或int *[],如错误所示。 -
“它一直给我数组的地址而不是值”。那是因为(第一项的地址,与数组的地址相同)是您传递给流的地址。它输出的正是你告诉它输出的内容。要输出数组值,请使用循环。它需要知道项目的数量。
-
了解decaying
标签: c++ arrays function pointers