今天上午的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个字节。