c - 为什么这个指针传递不起作用?

标签 c

编辑:一个初始的“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/

相关文章:

c++ - 使用 _set_purecall_handler 时如何在已发布的应用程序中获取调用堆栈

c - GTK2中如何设置GtkSpinButton边距?

c++ - 直接设置 struct tm 属性的值不起作用

c - 如何使用 gimp_drawable_set_pixel()?

Cortex : NVIC,请演示如何通过软件使其电平或边缘检测

c - 遇到指针问题

c - 链接器总是选择系统 libsasldb.so 而不是 LD_LIBRARY_PATH 提供的 libsasldb.so

c - 为什么按降序排列的 qsort int 数组不正确?

c++ - 从 char 指针中减去 char 数组产生一个 int?

c - 如何使 Visual C++ 解决方案在开始构建另一个项目时不删除一个项目