我想做那样的事情:
我正在调用一个函数:
myfunc( ....., float ** const ouPointer)
{
....
float * myPointer;
size_t *AnArray;
...
if ( NULL == *ouPointer )
{
myPointer = (float *) malloc( N * sizeof( float ) );
assert( NULL != myPointer );
*ouPointer = myPointer;
}
else
{
myPointer = *ouPointer;
}
for ( int i = 0; i < N; i++ )
{
(&myPointer)[ i ] = (float *) malloc( AnArray[ i ] * sizeof( float ) );
assert( NULL != (&myPointer)[ i ] );
}
//filling pointer
} //end of myfunc
但它在断言行中给出了seg错误。
为了将数据传递给rh函数我正在使用:
float * thePointer = NULL;
myfunc(...., &thePointer);
答案 0 :(得分:1)
您正在尝试分配许多指针。而你正试图有一个指针来存储所有这些指针。并且您正在尝试使用一个指向调用者的局部变量的指针,其中调用者获取指向指针数组的指针。
在循环中,代码必须是
myPointer [i] = (float *) malloc (...).
因此,myPointer必须具有float **类型 - 它是一个指向float *数组的指针。声明和作业必须是
float** myPointer;
myPointer = (float **) malloc( N * sizeof( float* ) );
最后参数必须是
myfunc( ....., float *** const ouPointer)