程序的三种结构:顺序、条件分支和循环。顺序就是按照时间从上到下依次执行,条件分支是不同情况不同对待,循环是反复干同一件事。先讲条件分支语句,包括if语句和swtich,if()括号里填写条件,如果条件满足即为真,if后面的语句才会执行,否则跳过忽略。比如if(height>1.80)printf("男神身高");此句就是判断身高有没有大于1米8,如果大于才会打印。if还可配合else使用,比如小梁是象棋最厉害的,但是陈明也还行,如果小梁愿意上场就直接推选他去参加比赛,否则才考虑陈明。
数据类型相当于建筑图纸,里面描述着结构大小等等,而变量名是依照图纸建造出来的建筑实体。
循环为啥要有变量i?i起到一个记录循环次数的作用,将整个循环比作一年,i就如同日历,每过一天都要撕掉一页(i--),不然时间过去了日期没过,永远也到不了过年(终止循环)。而循环嵌套就相当于一年有50周,一周有7天,一年就是外面的大循环,一周是小循环,他们是包含、被包含的关系。
数组是连续空间的相同元素的一组数据,方便管理和访问,不用设那么多变量名。支持随机访问和循环遍历。无论是变量或数组本质都是对内存的读或写。
函数可看成一个榨汁机,而参数就是放进去的水果,函数里面的代码就是榨汁机的功能,就是无论把什么果放进去都是一样的流程,即绞碎。但结果也会由于放进的水果不同而产生的果汁也不一样。也可以把函数里面的内容(临时变量)当成草稿纸上的计算,而要写在试卷的答案是函数返回值。
指针相当于藏宝图,你的祖父留给你宝藏但没有直接把很多宝物(数据本体)交到你手上,而是给你方位,让你自己寻找。这种间接的方法可以节省拷贝时的空间,只告诉数据在内存中的位置,然后再去访问,想读取或改变多少个元素就多少个。相当于网站有资源,你要分享给网友,不是直接发视频,太大了,而是发链接。
写法:int*p=&a; p就是个指针变量,除了刚创建变量时*号代表是个指针,其他情况是解引用,意思是按照这个地址寻找数据。
char*a="hello world"怎么理解?字符串存在内存常量区,只返回一个首元素地址给字符指针a保存。char a[]="你好";这个是数组,依次把元素存进里面去,而不是把地址赋值给a。除了创建数组顺便初始化可以char a[]="…"这样写,在声明数组之后下一句才把字符串赋值给数组就不行了,比如char a[256];
a="haha";会报错,此时会把字符串看成地址,而地址不可以赋值给指针常量即数组名。
结构体是一种构造数据类型,可以存储不同类型的变量,声明类型:struct (结构体类型名)S{
(类型A)int 变量名a;
(类型B)float 变量名b;
…
};
此后struct S就是属于数据类型,只是告诉编译器这个结构体由里面哪些部分组成,而不是变量名, 要创建变量实体还得用数据类型加名字 。注意还得用struct关键字+结构体名才是完整的结构体类型,除非用typedef。