编辑:一个初始的“float** floats;”是一个错字,已更正。此外,“* float [0] = 1.0;”确实有效,但是“*floats[1] = 1.0;”那时的段错误。该数组已分配。编译在迂腐的 c99 上没有警告。
这有效:
(伪:)
void func(int*);
int i;
func(&i);
void func(int* i) {
func2(i);
}
void func2(int* i) {
*i = 2;
}
初始值更改为 2。
但这没有用:
void func(float**);
float* floats;
func(&floats);
void func(float** floats) {
func2(floats);
}
void func2(float** floats) {
*floats[1] = 1.0;
}
赋值错误;
最佳答案
因为 'floats' 是一个错误的指针。当然,你声明了指针,但你没有分配任何内存,所以它指向的任何地方都是无效的。
此外,float** 的地址是 float***,这不是您的函数所要求的。
关于c - 为什么这个指针传递不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3552693/