C言語memsetとbzeroの実現方法
6239 ワード
次の警告テストでは、C言語memsetとbzeroの実装方法は似ていると思います.
出力結果:linux@ubuntu:~/E$ ./a.out 20 0 xbf 880688 0 xbf 88069 c 0 xbf 88069 c 0 xbf 880688 0 xbf 880689 0 xbf 88068 a 0 xbf 88068 a 0 xbf 88068 b 0 xbf 88068 c 0 xbf 88068 d 0 xbf 88068 e 0 xbf 88068 f 0 0 xbf 88068 f 0 0 0 xbf 880690 0 xbf 880691 0 xbf 880692 0 xbf 880693 0 xbf 880693 0 xbf 880694 0 xbf 880694 0 xbbf 880695 0 xbf 880696 0 xbf 880696 0 0 xbf 880697 0 xbf 880680 0 0 xbf 8806xbf 88069 a 0 xbf 88069 b 19 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlinux@ubuntu:~/E3$
#include
typedef struct A{
char ch[9];
int cc[2];
}a;
int main(int argc, const char *argv[])
{
a x;
int n,t;
n = sizeof(a);
char *p = (char *) &x;
printf("%d
",n);
printf("%p
",&x);
printf("%p
",&x+1);
for(t=0;t<n;t++){
printf("%p
",p+t);
*(p+t) = 'A';
}
printf("%d
",t-1);
printf("%s
",x.ch);
printf("%d
",x.cc[0]);
printf("%d
",x.cc[1]);
return 0;
}
出力結果:linux@ubuntu:~/E$ ./a.out 20 0 xbf 880688 0 xbf 88069 c 0 xbf 88069 c 0 xbf 880688 0 xbf 880689 0 xbf 88068 a 0 xbf 88068 a 0 xbf 88068 b 0 xbf 88068 c 0 xbf 88068 d 0 xbf 88068 e 0 xbf 88068 f 0 0 xbf 88068 f 0 0 0 xbf 880690 0 xbf 880691 0 xbf 880692 0 xbf 880693 0 xbf 880693 0 xbf 880694 0 xbf 880694 0 xbbf 880695 0 xbf 880696 0 xbf 880696 0 0 xbf 880697 0 xbf 880680 0 0 xbf 8806xbf 88069 a 0 xbf 88069 b 19 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlinux@ubuntu:~/E3$