先看下面几个例子:
char str[10];
memset(str,0,sizeof(str))和memset(&str,0,strlen(str))的区别在那里?
memset(str,0,sizeof(str))和memset(&str,0,strlen(str))的区别在那里?
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[] = "adadad";
char *p = a;
printf("%x/n%x/n",p,&p);
memset(p,0,strlen(p));
p[0] = 'a';
printf("%s",p);
return 0;
}
这样用可以.
但
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[] = "adadad";
char *p = a;
printf("%x/n%x/n",p,&p);
memset(&p,0,strlen(p));
p[0] = 'a';
printf("%s",p);
return 0;
}
这样就不行了.
但
#include <stdio.h>
#include <string.h>
int main(void)
{
char p[] = "adadad";
printf("%x/n%x/n",p,&p);
memset(&p,0,strlen(p));
#include <string.h>
int main(void)
{
char a[] = "adadad";
char *p = a;
printf("%x/n%x/n",p,&p);
memset(p,0,strlen(p));
p[0] = 'a';
printf("%s",p);
return 0;
}
这样用可以.
但
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[] = "adadad";
char *p = a;
printf("%x/n%x/n",p,&p);
memset(&p,0,strlen(p));
p[0] = 'a';
printf("%s",p);
return 0;
}
这样就不行了.
但
#include <stdio.h>
#include <string.h>
int main(void)
{
char p[] = "adadad";
printf("%x/n%x/n",p,&p);
memset(&p,0,strlen(p));