64,654
社区成员
发帖
与我相关
我的任务
分享
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );
}
void Test( void )
{
cout<<"in fun Test:"<<endl;
char *str = NULL;
//char **str2=NULL;
GetMemory( &str, 100 );
//GetMemory((str2,100));
strcpy( str, "hello\n" );
printf( str );
}
void Test( void )
{
cout<<"in fun Test:"<<endl;
char **str2=NULL;
GetMemory((str2,100));
strcpy( str, "hello\n" );
printf( str );
}
第一种char* str = NULL; //&str传参时是有地址空间的,形如0x0012ff7c
第二种char** str = NULL; //str传参时地址是0x00000000
你可以在编译器中watch窗口看一下两种传参的地址!
传参传0x00000000会有什么后果可想而知!
char ** str = NULL;
指针的指针为空,难道就可以证明指针也为空吗?
还有你说要先为指针的指针开辟空间,是不是按照下面的方式:
char **str2=(char **)malloc(128);
我现在有点晕了!
谢谢您的回复!
char** str = NULL; //str传参时地址是0x00000000
但是第一种char* str = NULL; //虽然str传参时是有地址空间的的,但是str地址也是0x00000000
这个不知道有没有影响?