本文共 964 字,大约阅读时间需要 3 分钟。
char *c;c=(char *)calloc(5,sizeof(char));// c=(char *)malloc(5*sizeof(char)); //和上面等同// c=new char[5]; //和上面等同
malloc或者calloc 用free;
new 用 delete []c释放;注:
malloc或者calloc, 最好不要直接写数字长度,针对楼主的问题,建议这样写: malloc(sizeof(char) * strlen(“abcde”) + 1));strcpy(a, b) 一定要验证是否满足 a的空间长度 > strlen(b).(运行时不报错,释放内存的时候会报错)
memcpy(a, b, len)的len参数一定要是a, b长度的最小值.
注意+1问题,数组溢出。
调用方式不同,前者是总长度一个参数,后者是每个的大小和个数两个参数;
后者会对内存进行初始化操作,前者只分配内存。 参见:依次为二维数组,指向char[]的指针,一个大小为4的存放char指针的数组,指向指针的指针。前两个可以转换,不能与其他转换(char指针指向的内容不确定)。
int main(){ char * a[4] = { "this", "is", "a", "test!"}; ///a是一个大小为4的数组,数组的每一个成员是char类型的指针 char b[][4] = { "aaa", "bbb", "bbb", "bbb", "bbb", "bbb"};//不存在 b[4][]的形式 char (*c)[4]; ///c是一个指针,指向char[4]类型的指针 char **d; c = &b[0]; ///取b[0]地址 d=a; printf("%s %s %s %s\n", a[0], b[0], c,d[1]); return 0;}
转载地址:http://jrkab.baihongyu.com/