- 论坛徽章:
- 22
|
本帖最后由 amarant 于 2011-04-01 09:08 编辑
你去打印下他們的地址就明白了
就我觀察,char str[4]的話,會順序在棧裏存儲,char str[2]那麼str會放在別的地址。
一下是gcc的編譯結果- #include <stdio.h>
- #include <stdlib.h>
- int main(void)
- {
- int i = 0;
- int j;
- char str[2];
- int k = 0;
- i=sprintf(str,"%s","abcdefgh");
- printf("%d %d\n",i,j);
- printf("%d\n",sizeof(str));
- printf("%s\n",str);
- char *p = str;
- for (j = 0; j < 10; j++){
- printf("%p: %c\n", p, *p);
- p++;
- }
- printf("i : %p\n", &i);
- printf("j : %p\n", &j);
- printf("k : %p\n", &k);
- return 0;
- }
复制代码8 3996544
2
abcdefgh
0xbfee077e: a
0xbfee077f: b
0xbfee0780: c
0xbfee0781: d
0xbfee0782: e
0xbfee0783: f
0xbfee0784: g
0xbfee0785: h
0xbfee0786:
0xbfee0787:
i : 0xbfee0778
j : 0xbfee0774
k : 0xbfee0770 |
|