C+中动态分配的数组+; 我在玩动态分配一个数组在C++中。我有这个密码 #include <iosteam> using namespace std; void A(int* arr) { for(int i = 0; i < 10; i++) cout << arr[i] << endl; } int main() { int **nums; nums = new int*[10]; for(int i = 0; i < 10; i++) nums[i] = new int(i); for(int i = 0; i < 10; i++) cout << *nums[i] << endl; cout << endl; A(*nums); return 0; }
我的问题是:当数组被传递给函数A(int*arr)时,为什么打印在那里的数组的输出与main()中定义的数组的输出不同?我一直在研究动态分配和双指针,但我似乎不明白这一点。我已经搜索了这么多问题,找不到这个问题的合适答案。我想知道是否可以在函数A()中打印数组的值,或者是否可以这样做。非常感谢您的帮助。您的职能:C+中动态分配的数组+; 我在玩动态分配一个数组在C++中。我有这个密码 #include <iosteam> using namespace std; void A(int* arr) { for(int i = 0; i < 10; i++) cout << arr[i] << endl; } int main() { int **nums; nums = new int*[10]; for(int i = 0; i < 10; i++) nums[i] = new int(i); for(int i = 0; i < 10; i++) cout << *nums[i] << endl; cout << endl; A(*nums); return 0; },c++,dynamic-arrays,C++,Dynamic Arrays,我的问题是:当数组被传递给函数A(int*arr)时,为什么打印在那里的数组的输出与main()中定义的数组的输出不同?我一直在研究动态分配和双指针,但我似乎不明白这一点。我已经搜索了这么多问题,找不到这个问题的合适答案。我想知道是否可以在函数A()中打印数组的值,或者是否可以这样做。非常感谢您的帮助。您的职能: void A(int* arr) { for(int i = 0; i < 10; i++) cout << arr[i] <<
void A(int* arr)
{
for(int i = 0; i < 10; i++)
cout << arr[i] << endl;
}
这相当于:
for(int i = 0; i < 10; i++)
cout << nums[0][i] << endl;
而不是
num[0][0]
num[0][1]
....
num[0][9]
你的职能:
void A(int* arr)
{
for(int i = 0; i < 10; i++)
cout << arr[i] << endl;
}
这相当于:
for(int i = 0; i < 10; i++)
cout << nums[0][i] << endl;
而不是
num[0][0]
num[0][1]
....
num[0][9]
上面的答案非常正确,您可以如下修改代码
void A(int** arr)
{
for(int i = 0; i < 10; i++)
// cout << *arr[i] << endl; or bellow
cout <<arr[i][0]<<endl;
}
void A(int**arr)
{
对于(int i=0;i<10;i++)
//cout以上答案非常正确,您可以按如下方式修改代码
void A(int** arr)
{
for(int i = 0; i < 10; i++)
// cout << *arr[i] << endl; or bellow
cout <<arr[i][0]<<endl;
}
void A(int**arr)
{
对于(int i=0;i<10;i++)
//那么,如果我想在A(int*arr)中打印数组,我该怎么做?或者甚至可以这样做吗?@jmh:这是不可能的,因为函数A
只收到一个int*
。因为您的数据是使用new int(I)单独分配的
,它们不是连续的,并且您无法从第一个元素中找到其他元素。您可以做的是将int*
数组作为类型int**
传递,并以与main中相同的方式访问。@BenVoigt谢谢!这就是我试图完成的。因此,如果我想在A(int*arr)中打印数组@jmh:这不可能,因为函数A
只收到一个int*
。因为您的数据是使用new int(I)单独分配的
,它们不是连续的,您无法从第一个元素中找到其他元素。您可以做的是将int*
数组作为类型int**
传递,并以与在main中相同的方式访问。@BenVoigt谢谢!这就是我试图完成的。谢谢您的回答。我检查了这个数组,它肯定是我也是。谢谢你的回答。我查了这个,它肯定也有用。