- . , , .
(n1256):
6.3.2.1 Lvalues,
...
3 , sizeof & , , , " type", " type", lvalue. , undefined.
" " 15- char.
char *string1 = "this is a test";
string1 char. " "
char [15] char *,
string1.
char string2[] = "this is a test";
- . :
6.7.8
...
14 ,
. (
, ) .
...
22 , . .
string2 char, , .
, , :
Item Address 0x00 0x01 0x02 0x03
---- ------- ---- ---- ---- ----
no name 0x08001230 't' 'h' 'i' 's'
0x08001234 ' ' 'i' 's' ' '
0x08001238 'a' ' ' 't' 'e'
0x0800123C 's' 't' 0
...
string1 0x12340000 0x08 0x00 0x12 0x30
string2 0x12340004 't' 'h' 'i' 's'
0x12340008 ' ' 'i' 's' ' '
0x1234000C 'a' ' ' 't' 'e'
0x1234000F 's' 't' 0
; , . undefined; , . , .
string1 string2, .
, string1, , . string2, , .
string2 , sizeof ( ) .
%i size_t. C99, %zu. C89 %lu unsigned long:
C89: printf("%lu, %lu\n", (unsigned long) sizeof string1, (unsigned long) sizeof string2);
C99: printf("%zu, %zu\n", sizeof string1, sizeof string2);
, sizeof - , ; , , ( ).