问题:下面代码的输出结果是什么?
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
struct{
short a1;
short a2;
short a3;
}A;
struct{
long a1;
short a2;
}B;
int main()
{
char* ss1="0123456789";
char ss2[]="0123456789";
char ss3[100]="0123456789";
int ss4[100];
char q1[]="abc";
char q2[]="a\n";
char* q3="a\n";
char *str1=(char*)malloc(100);
void *str2=(void*)malloc(100);
cout<<sizeof(ss1)<<" ";
cout<<sizeof(ss2)<<" ";
cout<<sizeof(ss3)<<" ";
cout<<sizeof(ss4)<<" ";
cout<<sizeof(q1)<<" ";
cout<<sizeof(q2)<<" ";
cout<<sizeof(q3)<<" ";
cout<<sizeof(A)<<" ";
cout<<sizeof(B)<<" ";
cout<<sizeof(str1)<<" ";
cout<<sizeof(str2)<<" ";
return 0;
}
答案:4 11 100 400 4 3 4 6 8 4 4
解析
SS1是字符指针 定值 所以是4
ss2是一个字符数组 数组要有”\n”补充,所以是11个
ss3是也是一个字符数组,不过这个数组已经分配了大小 所以是100
ss4是一个整形字符,每个整形变量所占空间是4,所以一共是400字节
q1和ss2类似
q2里面的\n只能算作一位
q3是一个字符指针
A和B是结构体,要取大对其的方案。