sougou笔试题:不同情况下的高地址与低地址

今天上午的sougou笔试题目: 

 1 #include <iostream>
 2 using namespace std;
 3 int main(void) {
 4     short input[10] = {'A''B''C''D''E'}; 
 5     unsigned char *p = (unsigned char*)&input; 
 6     int s = 0;
 7     cout<<"sizeof(input)"<<sizeof(input)<<endl;
 8     for(int i = 0; i < sizeof(input); i ++){ 
 9         char v = p[i];
10         //cout<<v<<'\t';
11         int temp = v;
12         cout<<temp<<'\t';
13         if(v > 0) s += v - 'A' + i;  
14     }   
15     cout <<endl<<"s="<< s << endl; 
16 }

这个题目,我在GCC下面跑了一下,答案为:

sizeof(input)20
65  0   66  0   67  0   68  0   69  0   0   0   0   0   0   0   0   0   0   0   
s=30

当时做错了,唉,考察点位:

    整数类型内部:低地址存储低位,高地址存储高位。
    局部变量:先定义的高地址,后定义的低地址。
    类,结构体,数组:先定义的低地址,后定义的高地址。
    数组实际占用的空间,要比元素大,感觉上像是给数组名本身一个“指针类型”的空间,即4个字节。 

 

 

posted @ 2011-10-23 22:16  Charliee  阅读(356)  评论(0编辑  收藏  举报