先想想下面的程序输出什么?
#include <string.h>
#include <stdio.h>
char str[10] = "dgdsf";
int num[10];
void test(char *ab, int *nn) {
printf("%d/n",sizeof(ab));
printf("%d/n",sizeof(str));
printf("%d/n",strlen(ab));
printf("%d/n",strlen(str));
printf("%d/n", sizeof(nn));
printf("%d/n", sizeof(num));
}
int main() {
test(str, num);
return 0;
}
输出结果:41055440
只知道sizeof是个宏,不知道为什么会这样。所以对于这种情况,用memset的童鞋小心了。