指针的大小是相同的,由于指针是用来存放地址的,因此,指针需要多大空间,取决于地址的存储需要多大空间。(指针大小在32位平台是4个字节,在64位平台上是8个字节)
在打印结构体时,如printf(“%s %d %lf\n”,ps->name,ps->age,ps->score);
需要用这种格式:结构体指针->成员变量(结构体的{}内的变量被称为成员变量。)
if和else只能控制一条语句,如果想要控制多条语句,就必须加上{}。
在使用if语句时,如果想加条件,则使用
if()
else if()
else if()
...(这里可以一直使用else if来增加条件)
else(最后需要使用else来结尾,这是就不需要再加其他条件了,因为它就是除以上所有条件以外)
当出现两个或者两个以上的if时,else只与最近的if匹配,在这之前的if全是前置条件(只有一直满足到else的语句才会执行)。
注意:
在使用if(num ==5)等类型的表达式时,为了避免犯错,尽量写成
if (5==num),这么做的目的是防止漏掉一个 = 号导致条件变量变成结果变量,使得num一直为真,导致结果发生偏差。
switch语句使用(注意:switch语句可以嵌套使用)
switch(整形表达式)
{
语句项
}
例如:switch (day)
{
case 1:
printf(”星期一\n“);
break;(它的作用是跳出,如果不用的话,即使只输入了1,它还是会将整个表达式的结果全部打印出来(会将2,3,4,5,...的结果打印出来),使用break就是对每个语句进行隔离。)
case 2:
printf(”星期二\n“);
break;
......(依次类推,使用case(由case开头的语句后面必须是整形常量表达式)去引导语句)
}
注意:即使没有加上break,整个表达式也没有任何问题,仅仅只是因为不合逻辑,如果逻辑对,那么也可以不加。
例如:
int day = 0
scanf(”%d“,&day);
switch (day)
{
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
printf(”工作日\n“);
break;(此处使用break是将语句隔开。)
case 6 :
case 7 :
printf("休息日\n");
break;
default :(它的作用是,如果输入了不在表达式中的值,那么就跳到这条语句)
printf(”输入错误\n“);
break;
}
这样的话,只要输入的是1到5,那么都会打印工作日,输入6到7就是休息日。
在while循环中,break用于永久的终止循环。(注意:break只能跳出自己所在的循环,不能跳出多个循环)
例如:
int main()
{
int i = 1;
while (i<=10)
{
if (5==i)
break;(当i循环到5时,进入break,那么就会跳出这个循环,不会再进入while语句)
printf("%d ",i);
}
return 0;
}
在while循环中,continue的作用是跳过本次循环continue后面的代码
例如:
while (i<=10)
{
if (i == 5)
continue;(当i到5时,会进入continue函数,从而跳过后面的函数,重新进入循环。但是,由于跳过了i++,所以进入了死循环)
printf(”%d“,i);
i++;
}
EOF----end of file---文件结束标志(本质上它就是-1)
getchar-----获取一个字符
putchar-----输出一个字符
例如:
int main()
{
int ch = getchar();
putchar(ch);(它的效果等同于printf(”%c“,ch);)
return 0;
}
ctrl+z(键盘上按)----getchar--读取结束
for循环语句用法
for(表达式1 :表达式2 :表达式3)例如:for(i = 1;i<=10;i++)
初始化 判断 调整
判断部分省略会导致判断部分恒为真,进入死循环。
循环体内改变循环变量不可取。
do while循环(它与while语句很相似,再加入break或continue后,会直接跳出或进入死循环)
特点:do循环至少要执行一次。
do
循环语句(注意:不一定只有一句话,最好使用{})
while(表达式);(;号不能省略)
例如:
int main()
{int i = 1;(这里初始量等于1是为了直接进入运行)
do
{
printf("%d ",i);
i++;
}while(i<=10);
return 0;
}