C 确定内存中字符数组的大小
我是C语言的初学者,如果我的语言/风格不专业,请原谅 问题: 我试图确定字符数组的大小,以便稍后使用malloc()知道要分配的大小 我的代码:C 确定内存中字符数组的大小,c,C,我是C语言的初学者,如果我的语言/风格不专业,请原谅 问题: 我试图确定字符数组的大小,以便稍后使用malloc()知道要分配的大小 我的代码: char *dest; char *src1 = "Test String"; char src2[] = "Testing!"; dest = (char *) malloc( sizeof(src1) ); 问题是我想确定src1和src2在内存中的大小。i、 e.src1的尺寸应为11,src2的尺寸应为8。 但是我从sizeof()得到的
char *dest;
char *src1 = "Test String";
char src2[] = "Testing!";
dest = (char *) malloc( sizeof(src1) );
问题是我想确定src1和src2在内存中的大小。i、 e.src1的尺寸应为11,src2的尺寸应为8。
但是我从sizeof()得到的结果是:
- sizeof(*src1)是1,因为sizeof(char)
- sizeof(src1)为4
提供环境中指针的大小,而不是数组的长度。根据结果,环境中指针的大小为4。
如果要确定指针指向的字符串文字的大小,如
的情况,则需要使用src1
strlen
返回字符数组的大小 为了理解两者之间的区别,您应该了解:sizeof(src2)
如果您想要字符串的长度(从您提供的数字中可以看出),可以使用
函数。(strlen函数是strlen(char*)
的一部分) 只需像这样传入字符串:int len1 = strlen(src1); // This will give 8 as intended
返回传递给它的类型的大小。由于src1是指针,它返回4 如果您只使用字符串,只需使用sizeof
即可获得字符串的大小。 然后,您的分配行应该如下所示strlen(src1)
dest = (char*) malloc(strlen(src1) + 1); // add one for the \0
dest = (char*) malloc(strlen(src1) + 1); // add one for the \0