今天在做一个习题的时候遇到这么个情况:
#define MAX 50+1 //题目需要,加1
int str[MAX];
memset(str,0,MAX * sizeof(int));//老是不能全部清零
memset(str,0,sizeof(str));//这个却可以
我疑惑了半天,又查看了memset函数的相关文章,还是摸不着头脑。我试了试memset(str,0,51* sizeof(int))---------逆天啊,这个却可以!!!
呵呵,相信大家早明白了------我又一次被宏忽悠了。 memset(str,0,MAX*sizeof(int)) 等价于memset(str,0,50+1*sizeof(int)),这个怎么会达到需要的效果呢!
总结:时刻注意宏在预处理时直接替换相关字符串