我有一个函数,我想作为一个参数,一个可变大小的2D数组.
到目前为止我有这个:
void myFunction(double** myArray){
myArray[x][y] = 5;
etc...
}
Run Code Online (Sandbox Code Playgroud)
我在代码中的其他地方声明了一个数组:
double anArray[10][10];
Run Code Online (Sandbox Code Playgroud)
但是,调用myFunction(anArray)
给了我一个错误.
当我传入数组时,我不想复制数组.所做的任何更改都myFunction
应该改变数据的状态anArray
.如果我理解正确,我只想作为参数传入指向2D数组的指针.该函数还需要接受不同大小的数组.例如,[10][10]
和[5][5]
.我怎样才能做到这一点?
一直在想,用[]或*声明变量之间的区别是什么?我看待它的方式:
char *str = new char[100];
char str2[] = "Hi world!";
Run Code Online (Sandbox Code Playgroud)
..应该是主要的区别,虽然我不确定你是否可以做类似的事情
char *str = "Hi all";
Run Code Online (Sandbox Code Playgroud)
..因为指针应该引用一个静态成员,我不知道它是否可以?
无论如何,真正困扰我的是知道以下两者之间的区别:
void upperCaseString(char *_str) {};
void upperCaseString(char _str[]) {};
Run Code Online (Sandbox Code Playgroud)
所以,如果有人能告诉我差异,我将不胜感激吗?我有一种预感,除了一些特殊情况外,两者都可以编译得相同吗?
泰