On May 6, 11:45=A0am, "Kevin" <yushuma...@[EMAIL PROTECTED]
> wrote:
> Source:
> #include <stdio.h>
> #include <ctype.h>
> void main()
> {
> =A0 =A0 char a[]=3D"this is the beautiful world!";
> =A0 =A0 char b[20];
> =A0 =A0 strcpy(b,a);
> =A0 =A0 printf("char array b size is(%d),The content of b
is:%s\n",sizeof(=
b),b);
> =A0 =A0 if(strcmp(a,b)=3D=3D0)
> =A0 =A0 =A0 =A0printf("a equal to b!\n");
>
> }
>
> Now , question as follows:
>
> 1. Why "b" size unequal "a" size , but "b" can output "a" content?
> 2. Why "if(strcmp(a,b)=3D=3D0)" is true?
a and b are different types:
a is a pointer to a string
b /is/ a string.
But a can obviously point to a string identical to what's in b.
The size of a will be 4 or whatever, the size of b will be 20
(although it should be more in this case otherwise your "this is..."
string will overflow it).
strcmp() compares two pointers to strings; but b is automatically
converted to such a pointer, thanks to the way C handles arrays.
--
Bartc


|