初识结构体struct
描述复杂对象,比如描述一个人 、一本书不是能用一种信息描述出来,那描述复杂对象,C语言中中引入结构体来描述复杂对象,结构体里面可以包含多个信息。struct是结构体关键字,比如struct book创建了一个类型为book的结构体;那如何描述book这个结构体?
这样描述自定义结构体,这个;号不可以省略。
因为对于结构体来说这是声明一个自定义结构体,所以这里需要加;如果是自定义函数那对于函数来说就是定义不是声明不需要加;
那结构体这个类型怎么用?
这里的结构体访问成员操作符是.
还有另外一种方法, 蓝色区域指针。
这里 ->也是结构体成员访问符。意思是pb既然是个指针,它->那个对象的名字。
在这额外补充一句,如果字符串已经初始化,那便不可以更改,但是变量可以修改。需要重新拷贝,看图一; 重新拷贝看图2
图一
图二
c语言中,大概把内存划分为三个区域分别为:栈区 堆区 静态区
关于static函数
static修饰局部变量、全局变量、和函数
static修饰局部变量:首先我们要知道局部变量是放在栈区,如果被static修饰就存储到静态区了,修饰局部变量改变了变量的存储位置,出作用域不销毁,使得这个静态变量的声明周期变长,程序结束,静态变量才销毁;但需要注意的是static 修饰的局部变量还是只能在自己的作用域内使用,出了自己作用域其他地方就没法使用。
static修饰全局变量:全局变量具有外部链接属性,如果你想在其他源文件内部使用这个全局变量,只需要extern 类型 变量名;就可以使用。 static修饰全局变量,改变了全局变量的连接属性,由外部链接属性变为内部链接属性,只能在staitc修饰的源文件内使用,其他源文件内不可以使用;感觉像作用域变小了,但不影响存储位置,还是在静态区,限制了适用范围.
static修饰函数:extern add(int ,int );这就是extern的函数声明,
如果static修饰add这个函数则会报错,错误信息是无法解析的外部命令,其实是add函数不存在,
为什么,因为函数本身是具有外部链接属性,但是被static修饰就会变成内部链接属性,使得这个函数只能在自己所在的源文件内部使用,不能在其他文件内部使用
选择分支结构
选择分支结构分为 if选择分支结构,也称为if判断语句,如果if后面括号中表达式为真,则执行if{}中的语句,如果表达式为假,则不执行。else没有表达式,if括号的表达式判断为假,直接进入else 执行else里的内容,
switch多分支结构(类似汉语开关的意思)
switch(表达式) :这里表达式类似于一堆开关,选择几,就从下面的分支几进去。比如int a=1;switch(a)其实就是从case 1分支进入,如果从case 1语句中进入没有遇到continue 或者break,则会把所有分支都执行完,但countinue不可以直接用于switch语句,必须要在switch外加上循环才可以使用.
{
case 1: 表示分支1
case 2:表示分支2
default :表示其他分支
}
这里需要注意的是case空格在+常量在输入:
case c不可以,c是变量。
continue跟break区别:
break是直接结束循环。而continue是结束continue后面的代码,直接去判断部分,看是否进入进行下一次循环.