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 }
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个字节。