以下程序在32位机上的输出结果是什么

zzxap 2011-06-12 10:18:44
1.以下程序在32位机上的输出结果是什么
char array[8]="abc";
char* str ="defghi";
sizeof(array);
sizeof(str);
sizeof(array);
strlen(array);
strlen(str);
int b[3][4];
sizeof(b);
sizeof(b[0]);
void f(int c[10])
{
sizeof(c);
}
struct test
{
int a;
char b;
char c;


}

sizeof(test);

2.假设a的地址是十进制1000,数组向高位增长,sizeof(int)==4,请写出下面1-4各行表达式的类型和值
int a[2][5]={{1,2,3,4,5},{6,7,8,9,10}};
a+1;
&a+1;
a[1];
a[1]+1;

...全文
614 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝染忽右介 2011-06-12
  • 打赏
  • 举报
回复

a+1;//==&a[1]=>int (*)[5];
&a+1;//越界了=>int *
a[1];//==&a[1][0]==>int *
a[1]+1;//==&a[1][1]==>int *
bdmh 2011-06-12
  • 打赏
  • 举报
回复
a+1; //+1后,到了第二行, 就是6的位置
&a+1; //地址+1,乱值
a[1]; //第二行,6的位置
a[1]+1; //元素 6 + 1 = 7
  • 打赏
  • 举报
回复

a+1; //相当于 a+sizeof(a);也就是指向下一个
&a+1;//指向下一个int
a[1];//678910的首地址
a[1]+1;//同 a+1


a+1; //相当于 a+sizeof(a);也就是指向下一个
&a+1;//指向下一个int
这两个可能出错了,不好意思
bdmh 2011-06-12
  • 打赏
  • 举报
回复
sizeof(array) = 8;
sizeof(str) = 4,str是指针,指针占4字节

strlen是去字符长度,不包括结束符,所一strlen(array)=3,strlen(str)=6
  • 打赏
  • 举报
回复

char array[8]="abc";
char* str ="defghi";
sizeof(array); //8
sizeof(str);//4
sizeof(array);//8
strlen(array);//3
strlen(str);//6
int b[3][4];
sizeof(b);//48
sizeof(b[0]);//16
void f(int c[10])
{
sizeof(c);//4
}
struct test
{
int a;
char b;
char c;


}

sizeof(test);//8

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧