C语言_题解
21视频教程网C语言编辑部3月21日整理
学生:
(1),stuct{ int i;
char c;
double a;}a;
sizef(a)为什么会等于11??
(2),#include<stdio.h>
{int x;struct *y;}*p;
struct tt a[4]={20,a+1,15,a+2,30,17,a};
main()
{int i;
p=a;
for(i=1;i<=2;i++) {printf("%d,",p->x);p=p->y;}
}
为什么结果是20,15,请详细解说下,谢谢!
C语言视频教程:
不同电脑或不同版本软件的话,对int char double 的规定是不同的,因此会出现11.
C语言视频教程:
1. 对齐:按单个变量占字节数最大的数量为一个单位,各个变量排列时,若两个或多个没有占满一个单位时,可以在一个单位内排列,若超出了,则从超出的那个开 始,从下一个单位开始算,以此类推,最终按单位的倍数计总字节数,结果应该是16
(2). struct tt a[4]={20,a+1,15,a+2,30,17,a};赋值的结果是:
a[0].x = 20, a[0].y = &a[1];
a[1].x = 15, a[1].y = &a[2];
a[2].x = 30, a[2].y = 17;
a[3].x = &a[0], a[3].y = 0;//是不是你30与17之间漏了一个a+3啦,要不然可以组成一个循环链表
for(i=1;i<=2;i++) 循环的次数是2,p = a 可得p == &a[0];所以第一次循环时实际上是打印a[0].x所以为20,然后p = a[0].y == &a[1],在第二次打印的时候为a[1].x == 15
C语言视频教程:
写程序时请注意格式,这样既美观又好查错。
程序代码:
把sizef改为sizeof,stuct改为struct.
第一个编译结果是16.
学生:
这样啊,谢谢
C语言视频教程编辑部
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |