C语言学习2

初识指针

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

 1.%p是用来打印地址的。在32位中是由32个比特位的2进制序列组成的地址,所以就可以表示2的32次方个地址/储存单元,

一个储存单元等于一字节(即1Byte)

2.int a=0;//a在内存中要分配空间---4个字节

int*pa=&a//把a的地址给到pa,&a拿出来的是a所占4个字节的第一个字节的地址

pa是用来存放地址的,叫做指针变量,*说明pa是指针变量,int说明pa指向的对象是int类型的

例子:char  c=‘w’;

          char*pc=&c;

           *pc;//*叫做解引用操作*pc就是通过pc里的地址找到c

可以用sizeof求出指针变量的大小,在32位里为4字节;在64位里为8字节

初识结构体

结构体可以创建出新的类型

比如创建一个学生类型

struct stu
{
    char name[20];
    int age;
    double score;
};

用这个类型即可创建一个学生

int main()
{
struct stu s={"张华",18,100};//结构体的创建和初始化
printf("1:%s %d %lf\n",s.name,s.age,s.score);//打印结构体变量,这里的“.”操作符可以理解为“的”。
struct stu * ps=&s;
printf("2:%s %d %lf\n",(*ps).name,(*ps).age,(*ps).score);//用指针变量来打印
printf("3:%s %d %lf\n",ps->name,ps->age,ps->score);//"->"操作符:“结构体指针->成员变量名”


}

分支语句ifelse

if()括号里面写条件即满足什么条件是执行if下的程序

()里面如果是几个条件中间要加上&&或者||等逻辑运算符

if(a>=0&&a<=18)
{
}

{}内只有一条语句时“{}”可以省略,有多条语句时不可以省略。

if()

else if()

else if()

else//这样就可以分成好多种情况最后再用else

悬空else

当写了这个代码

#include<stdio.h>
int main()
{
    int a=0;
    int b=2;
    if(a==1)
       if(b==2)
          printf("张华\n");
    else
       printf("国\n");
    return 0;
}

这段代码打印不出东西。因为else和离它最近的if匹配所以必须第一个if为真才有它的事。

                                               不是谁和它对齐就和谁匹配

这里就体现了{}的重要性,如果加上{}可以更好的看出(/控制)匹配关系

小tip:在if后面判断时(5==z)可以把常量放在左边这样如果少一个=就会报错可以提醒自己

分支语句switch

switch语句也是一种分支语句,常用于多分支的情况

比如

输入1周一
输入2周二

输入3

周三
输入4周四
输入5周五
输入6周六
输入7周天

这如果用if,else很麻烦,就需要用到switch语句了

switch(整型表达式){语句项}

int a=0;这里的a就是整型表达式

下面完成上述例子直观感受一下

#include<stdio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
		printf("周一");
		break;
	case 2:
		printf("周二");
		break;
	case 3:
		printf("周三");
		break;
	case 4:
		printf("周四");
		break;
	case 5:
		printf("周五");
		break;
	case 6:
		printf("周六");
		break;
	case 7:
		printf("周天");
		break;
	}
	return 0;
}

说明:case相当于一个入口,我们输入的几会走到case几里面,break相当于一个出口,如果没有break的话它就会一直走下去

case后必须是整形常量表达式

如果输入的值case中没有,我们可以加一条default语句,当输入的值不匹配任何case语句时,default语句就会被执行,default语句可以放在switch中的任何位置但一般放在最后。

循环语句

包含三个{while,for,do while}

while循环

语法结构:while(表达式)

                        循环语句;————可能不是一条语句

注:表达式结果为真循环语句执行,否则不执行。在while前要先对循环变量进行初始化z

 在while循环中break用于永久终止循环

在while循环中continue的作用是跳过本次循环continue后面的代码,直接去判断部分看是否进行下一次的循环

EOF=end  of  file即结束

getchar()可以读取一个字符当遇到错误时就会是EOF

输入字符数组不用&例如

char ch[20]={0};
scanf("s",ch);

这里ch前就不用&符号,因为字符数组的数组名本身就是一个地址

for循环

for(表达式1;表达式2;表达式3)

       循环语句;

表达式1:初始化        表达式2:判断       表达式3:调整

                                                                    流程图

break和continue在for循环中的出现

break与while相同continue略有不同

在for循环中continue跳过后会进入调整部分而while循环中完全有可能跳过调整部分导致出现死循环

举个例子

int main()
{
	int i = 0;
	while (i <= 10)
	{
		if (5 == i)
			continue;
		printf("%d\n", i);
		i++;
	}
	return 0;
}

 这里continue后的i++不会执行导致只能输出1234

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			continue;
		}
		printf("%d\n", i);

	}

	return 0;
}

这里的continue就不会陷入死循环,i=5之后会进入调整环节,所以可以输出1234678910

for循环的三个部分均可以省略不过判断部分省略的话就恒为真会死循环

do...while循环

do

     循环语句;

while(表达式);

与while的区别,这个是先执行再判断,while是先判断再执行

                                                                         流程图

刷题记录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值