见到的巧妙的小题
char c[] = “abc\0cba”; 问题1:sizeof(c) = ? 问题2:strlen(c) = ? 问题3:执行free(c);之后会有什么后果? |
#include<math.h>
#include<string.h>
int main(){
char a[]="asdasd";
char c[] ="abc\0cba";
printf("%d\n%d",sizeof(c),strlen(c));
free(c);
printf("%d",c);
return 0;
}
得8,3,2686760。可知sizeof获得整个字符串的长度, strlen则遇到结束符\0就结束。
至于2686760则是将c与字符串断开后的栈地址