Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-将未初始化的变量传递给函数_C_Function_Pointers_Initialization_Declaration - Fatal编程技术网

C-将未初始化的变量传递给函数

C-将未初始化的变量传递给函数,c,function,pointers,initialization,declaration,C,Function,Pointers,Initialization,Declaration,假设我有一个char*str,我还不知道它的大小,所以我只能声明它。然后我把它传递给一个函数,这个函数会知道它的大小,所以它会初始化并设置它。我该怎么做 char * str; func(&str); 及 或 然后: 下载投票者-请稍等片刻说明原因。为变量分配内存没有什么神奇之处。在某些时候,通过某种方法,您必须提供size值,以便能够正确调用malloc或calloc等函数的参数。如果您发布到目前为止的代码,至少显示出一些解决问题的努力,那也会很好。谢谢,对此表示抱歉。我添加了一些代

假设我有一个char*str,我还不知道它的大小,所以我只能声明它。然后我把它传递给一个函数,这个函数会知道它的大小,所以它会初始化并设置它。我该怎么做

char * str;
func(&str);

然后:


下载投票者-请稍等片刻说明原因。为变量分配内存没有什么神奇之处。在某些时候,通过某种方法,您必须提供size值,以便能够正确调用malloc或calloc等函数的参数。如果您发布到目前为止的代码,至少显示出一些解决问题的努力,那也会很好。谢谢,对此表示抱歉。我添加了一些代码来澄清问题。如果你删除sieZoFaar……我会赞成。@ PaulGriffiSes是的,我同意C定义SieZoFCHAR为1,总是和C++也一样,但是我认为OP是初学者,所以我补充说。无论如何,我会使用char*ptr=mallocSIZE*sizeof*ptr+尺寸为*ptr时为1
void func(char ** str) {
    // initialize str...
}
#define SIZE 10  //or some other value  
const int SIZE = 10;   //or some other value  
void init( char** ptr) // pass a pointer to your char*
{
    *ptr= malloc( SIZE ); //of any size
}

int main()
{
    char *str;
    init( &str ); //address of pointer str
    //...Processing

    free(str);
    return 0;
}