#include <stdio.h> int main() { /*We Hope They Are All Together*/ int start = 0; int i_am_start = 100; float i_am_float = 3.1415926; char i_am_char[20] = {34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53}; int end = 1; int *pstart = &start; int *pi_am_start = &i_am_start; float *pi_am_float = &i_am_float; char *pi_am_char = &i_am_char[0]; int *pend = &end; printf("The Address of start is : ------%ld\n",&start); printf("The Address of i_am_start is : ------%ld\n",&i_am_start); printf("The Address of i_am_float is : ------%ld\n",&i_am_float); printf("The Address of i_am_char is : ------%ld\n",&i_am_char[0]); printf("The Address of end is : ------%ld\n",&end); printf("The Address of pstart is : ------%ld\n",&pstart); printf("The Address of pi_am_start is : ------%ld\n",&pi_am_start); printf("The Address of pi_am_float is : ------%ld\n",&pi_am_float); printf("The Address of pchar is : ------%ld\n",&pi_am_char); printf("The Address of pend is : ------%ld\n",&pend); printf("------------------------华丽的分割线------------------------\n"); printf("\n"); printf("------------------------华丽的分割线------------------------\n"); /*Display Datas In Memory We've Allocated*/ int count = 0; char *p,*q,*r; q = &i_am_char[0]; r = (char *)&i_am_float; for(p = q;p < r;p++) { printf("The Value of p is:------%c,\t the Address of i_am_char[%d] is:------%ld\n",*p,count,p); count++; } /*i_am_char[20]:What's Left Behind Me?*/ return 0; } |
Magical Snap - 2010.01.09 16.09 - 002.jpg (104.58 KB, 下载次数: 36)
原帖由 mike79 于 2010-1-9 21:06 发表
你觉得有什么问题?
你申请20个元素,系统保证分配给你20个元素的空间,但不保证只分配给你20个元素的空间。
或者说你的要求并不是“分配且仅分配20个元素的空间”
原帖由 beepbug 于 2010-1-10 13:46 发表
C/C++的数组,边界只是在地上划一条线,这边是我家,那边是你家,你不要过来。可他伸脚进来,并没有任何东西挡着他。和别的语言不一样。
因此猜想,这多留一些荒地,就不太容易冲到别人园子去,别人也不太容易 ...
GCC4.3_1.jpg (111.95 KB, 下载次数: 30)
GCC4.3_2.jpg (174.48 KB, 下载次数: 34)
原帖由 beepbug 于 2010-1-10 13:46 发表
C/C++的数组,边界只是在地上划一条线,这边是我家,那边是你家,你不要过来。可他伸脚进来,并没有任何东西挡着他。和别的语言不一样。
因此猜想,这多留一些荒地,就不太容易冲到别人园子去,别人也不太容易 ...
原帖由 -liupangzi- 于 2010-1-10 19:41 发表
谢谢。
刚开始我确实是这么猜想的,可能编译器不会像人一样偷懒,但打印出来的结果也表明,除了数组,其他的变量在内存中是按照申请的顺序排列的,所以有些想当然的当成是这样了~
如果不这样想,问题 ...
原帖由 beepbug 于 2010-1-11 08:07 发表
对不起,你没看懂我的意思。C/C++标准同样没规定分配变量的实际空间,必须是随机的。我的意思是,C/C++标准没规定:
1)源码中变量的顺序,就是目的码或实际运行时内存中的顺序。
这意思是,如果你自己搞一 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |