84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
#include <iostream> using namespace std; int main() { char*a[]={"zzzz","zz","zzzzzzz"}; cout << sizeof(a) << endl; return 0; }
为什么输出是24呢?为什么数组的大小不是5 + 3 + 8 = 16呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
a存放的是三个字符串常量的地址,并不是直接存放3个字符串,一个地址也就是一个指针
|----------| | xxxxxx | |----------| |--------| a --> | pointer1 | -----> | "zzzz" | |----------| |--------| |------| | pointer2 | ---------------------> | "zz" | |----------| |-----------| |------| | pointer3 | -----> | "zzzzzzz" | |----------| |-----------| | xxxxx |
sizeof(a) == 3 * sizeof(pointer) = 24
如果你是32位操作系统,则指针长度是4字节,64位是8字节,可以推算出你的编译环境是64位的
a存放的是三个字符串常量的地址,并不是直接存放3个字符串,一个地址也就是一个指针
如果你是32位操作系统,则指针长度是4字节,64位是8字节,可以推算出你的编译环境是64位的