我被C ++二维动态数组卡住了。我想获得数组长度。这是代码:
#include <iostream>
using namespace std;
int dosomestuff(char **dict);
int main(){
int x, y;
char **dict;
cin>>x>>y; // here to input the 'x'
dict = new char *[x];
for(i = 0; i < x; i++){
dict[i] = new char[y];
for(j = 0; j < y; j++){
cin>>dict[i][j];
}
}
dosomestuff(dict);
}
int dosomestuff(char **dict){
int x, y;
x = sizeof(*dict); //8 not equal to the 'x'
//run in mac_64 I think this is the pointer's length
y = strlen(dict[0]); //this equal to the 'y' in function main
cout<<x<<" "<<y<<endl;
return 0;
}
我想要的是在函数dosomestuff中使x等于&#39; x&#39;在功能主要。
我怎样才能得到它?任何人都可以帮帮我〜?很多。
答案 0 :(得分:4)
sizeof(*dict)
只会为您提供sizeof(char*)
,这不是您所希望的。
无法在x
中了解dict
中dosomestuff
的价值。如果您想char**
使用dict
,则最好选择将x
和y
传递给dosomestuff
。
int dosomestuff(char **dict, int x, int y);
由于您使用的是C ++,因此可以使用:
std::vector<std::string> dict;
如果您将dosomestuff
传递给dict
,那么您将获得{{1}}所需的所有信息。