Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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++;为什么访问数组中的元素会返回指针? 我的安慰语言是java,但最近我决定学习C++语法。 int ks(int Wt[], int Va[], int N, int totW){ if(N==0){ return 0; } int V[N+1][totW+1]; for(int i = 0; i < N+1; i++){ V[i][0] = 0; // fill first row with 0's } for(int i = 0; i < totW+1; i++){ V[0][i] = 0; // fill first column with 0's } for(int i = 1; i < N+1; i++){ for(int j = 0; j < totW+1; j++){ if(Wt[i] <= j) { V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]); } else { V[i][j] = V[i-1][j]; } } } return V[N][totW]; }_C++_Pointers - Fatal编程技术网

C++;为什么访问数组中的元素会返回指针? 我的安慰语言是java,但最近我决定学习C++语法。 int ks(int Wt[], int Va[], int N, int totW){ if(N==0){ return 0; } int V[N+1][totW+1]; for(int i = 0; i < N+1; i++){ V[i][0] = 0; // fill first row with 0's } for(int i = 0; i < totW+1; i++){ V[0][i] = 0; // fill first column with 0's } for(int i = 1; i < N+1; i++){ for(int j = 0; j < totW+1; j++){ if(Wt[i] <= j) { V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]); } else { V[i][j] = V[i-1][j]; } } } return V[N][totW]; }

C++;为什么访问数组中的元素会返回指针? 我的安慰语言是java,但最近我决定学习C++语法。 int ks(int Wt[], int Va[], int N, int totW){ if(N==0){ return 0; } int V[N+1][totW+1]; for(int i = 0; i < N+1; i++){ V[i][0] = 0; // fill first row with 0's } for(int i = 0; i < totW+1; i++){ V[0][i] = 0; // fill first column with 0's } for(int i = 1; i < N+1; i++){ for(int j = 0; j < totW+1; j++){ if(Wt[i] <= j) { V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]); } else { V[i][j] = V[i-1][j]; } } } return V[N][totW]; },c++,pointers,C++,Pointers,错误内容如下: 重载函数“std::max”的实例与参数列表不匹配--参数类型为:(int,int*) 我的问题是,为什么 Va [i] 返回指针,而 v[i1] [j] < /C>不, v[i-1,j-Wt[i] ] />代码>不是你如何访问C++中的二维数组。事实上,没有原始的二维数组,只有数组的数组(这就是V)。您始终需要通过几个连续的[]访问它们 该表达式中的,(以及在不表示其他内容的其他表达式中)是计算并丢弃其左操作数的。因此,您的代码尝试做的是: 计算i-1,然后丢弃结果 计算j-

错误内容如下:

重载函数“std::max”的实例与参数列表不匹配--参数类型为:(int,int*)


我的问题是,为什么<代码> Va [i] <代码>返回指针,而<代码> v[i1] [j] < /C>不,

<代码> v[i-1,j-Wt[i] ] />代码>不是你如何访问C++中的二维数组。事实上,没有原始的二维数组,只有数组的数组(这就是
V
)。您始终需要通过几个连续的
[]
访问它们

该表达式中的
(以及在不表示其他内容的其他表达式中)是计算并丢弃其左操作数的。因此,您的代码尝试做的是:

  • 计算
    i-1
    ,然后丢弃结果
  • 计算
    j-Wt[i]
    ,然后访问
    V[j-Wt[i]]
    。那不是你想要的

  • <代码> v[i-1,j-Wt[i] ] />代码不符合你的想法。你可能想要< C++ > [I-1 ] [J-WT[i] ] < /> >。警告,java和C++之间的区别比语法更重要。实际上语法是唯一的东西,二者有一些相似之处,但是你最好忘记所有你知道的东西,从C++学习代码+代码> int V [n+1] [totw + 1 ];<代码>是非标准C++,使用VLA扩展。我的问题是,为什么…code>int Va[i]不会计算为指针
    Va
    是一个衰减为指针的数组参数。如果将索引
    [i]
    添加到
    Va
    ,则将选择该
    int
    数组的第i个元素。所以,<代码> Va [i] < /> >将其计算为<代码> int <代码>,而不是指向<代码> int <代码>的指针。哇,我完全误解了C++是如何排列数组的。字面上与Java相同。真尴尬@关于C++的有趣部分是,您可以创建过载的数据结构,例如“代码>操作程序”(< /代码>),并提供这种精确的功能,这样您就可以得到<代码>矩阵(行,列)< /C>访问器。遗憾的是,
    操作符[]
    可能只接受参数。
    V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]);