char ch[N] ;中数组个数N必须是正整数常量;
所以,当数组个数为变量的时候,就无法使用这种方法定义;
此时就需要申请动态数组
void* func(int N)
{
char *str = (char*)malloc(N*sizeof(char));
return str;
}
此外,申请动态内存的优点还有:
当函数的返回值为指针的时候,倘若指针指向的是局部变量:
void* func(int N)
{
char ch[6]="hello";
char *str = ch;
return str;
}
因为是ch[6]为存储的是局部变量,当返回指针str时,函数外,该变量生命周期结束,所以要使用动态数组。