Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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+中动态分配的数组+; 我在玩动态分配一个数组在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] <<

我的问题是:当数组被传递给函数A(int*arr)时,为什么打印在那里的数组的输出与main()中定义的数组的输出不同?我一直在研究动态分配和双指针,但我似乎不明白这一点。我已经搜索了这么多问题,找不到这个问题的合适答案。我想知道是否可以在函数A()中打印数组的值,或者是否可以这样做。非常感谢您的帮助。

您的职能:

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谢谢!这就是我试图完成的。谢谢您的回答。我检查了这个数组,它肯定是我也是。谢谢你的回答。我查了这个,它肯定也有用。