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