C语言基础

C

变量:

变量的数据类型:

  • 变量按照数据的分类分为整数和浮点数
  • 不同变量的数据类型是不同的
  • 数据类型有整型,浮点型,字符型,指针,结构体

变量的声明:

  • 变量是什么数据类型的就声明什么类型,int、float、double、char
  • 变量必须要进行声明,没有经过声明的变量是不能直接拿来使用的

变量的命名规则:

  • 只能由字母、数字和下划线组成,首字母只能是字母和下划线
  • 大小写敏感
  • 不能和关键字重名

变量名的初始化:

  • 没有经过初始化的变量存放的值都是垃圾值,所以我们一般在定义一个变量的时候都会给那个变量赋一个值叫做变量的初始化
  • 变量的初始化和赋值的区别

运算符:

  • 运算符的优先级:算术运算>关系运算>逻辑运算>赋值运算
  • .运算符的结合性:
右结合性:
单目运算符(-,(类型),++,--,*,&,!,~,sizeof)
三目运算符
赋值运算符
  • 算术运算:
    +、-、*、/、%、++、——
    变量的自增或自减,不能用于常量
    前置规则和后置规则
  • 关系运算:逻辑真true、逻辑假false,非0为真0为假
    在OC中的BOOL值用YES或NO
  • sizeof、逗号表达式

分支语句:

  • 1.单分支条件判断语句 if
  • 2.双分支条件判断语句 if-else
  • 3.多分支条件判断语句 if-else if
  • 4.switch语句:
  • switch-case语句用于多分支条件判断
    - 控制表达式是由整型或字符类型变量组成,如果是表达式,表达式的结果一定要是个整数;
    - case后面的常量不可以重复,没有顺序要求,但是必须是整型常量,不能是变量、表达式、浮点数、字符串;
    - break用于结束switch语句的运行,如有没有break语句,switch语句就会连续执行。
    - default可有可无,当所有case后面的常量与switch后面的表达式的值都不相同时,执行其后的语句。
    - 优势:switch-case可以简化多分支条件判断(理由)、逻辑结构更加清晰(理由)、执行速度快(理由)

循环结构:

  • 1.for循环:
    - 表达式1:赋值表达式;表达式2:条件表达式,用来判断是否执行循环体的控制语句;表达式3:迭代表达式;
    - for循环一般用于实现固定次数的循环;
    - for循环的三个表达式都可以省略,如要要省略表达式1,就要在循环前对变量进行定义并且初始化值;
    - 如有省略表达式2,条件就会永远为真,就会导致死循环;
    - 如果省略表达式3,也会导致死循环,在循环里面加上循环体就可以了。
  • 2.while循环:
    - 条件表达式:用来判断循环体是否执行的控制语句;
    - 循环体:可以是一条或者多条语句;
    - while循环一般用于处理未知次数的循环
  • 3.do~while循环:一般用于处理菜单类程序
  • 4.三种循环的区别:
    判断先后的区别:
    - for、while是先判断,后执行循环体
    - do~while是先执行循环体,后判断
    用途:
    - for:用于固定次数的循环
    - while:用于不固定次数的循环
    - do~while:用于菜单类程序(循环体至少要被执行一次的程序)
    - break语句:终止整个循环
    - continue语句:结束本次循环

数组:

  • 1.数组中的每一个变量称为每一个元素,数组是由多个元素组成的
  • 2.数组的下标:数组中的元素是靠数组的下标来区分的,数组的下标是从0开始计算的
  • 3.数组的长度:数组的长度是由数组元素的个数来决定的,数组有多少个元素就代表数组的长度有多长
  • 4.数组名与数组首地址:数组的数组名代表的是一个地址,数组的地址是通过数组的第一个元素的地址决定的,数组名是一个常量地址,所以数组名不能够作左值
  • 5.数组的初始化:
    - 当数组长度等于初始化元素的个数时,数组可以不写数组长度
    - 当数组长度大于初始化元素的个数时,多余的元素会被自动清零
    - 当数组长度小于初始化元素的个数时,多余的元素会被自动丢弃
    C99新增的方法可以直接对指定的元素进行初始化,未被指定初始化的元素会被自动清零
  • 6.数组的元素进行赋值的时候只能逐个赋值,不能整体的进行赋值,数组的元素可以拷贝到另一个数组上
  • 7.数组的遍历:正向遍历、反向遍历
  • 8.二维数组:二维数组在进行初始化的时候只能省略第一维

函数:

  • 函数的声明和定义:
    - 如果函数定义主函数的前面,就不需要进行声明,如果函数定义在函数的后面,就要在主函数前进行函数的声明
    - 无返回值的用void对函数进行声明,有返回值的就要使用返回值的类型对函数进行声明
  • 函数的调用:
    常量、变量、表达式、函数调用都可以作实参
  • 实参与形参:
    值传递:实参赋值给形参之后,形参在函数体内发生的变化,不会传回给实参
    个数的对应关系:实参必须与形参一一对应
    类型转换:以形参为标准就行转换,转换成形参的数据类型
    return关键字:结束所在函数的运行、跨函数赋值到函数调用处
    exit:结束整个程序
    递归:是一种特殊的函数调用方法,自己调用自己
  • 局部变量:
    形参是一个局部变量
    定义在函数体内的变量是局部变量
    定义在符合语句中的变量是局部变量
    循环体内定义的变量是局部变量
    局部变量的作用域是从定义行到函数体的结束
  • 全局变量:
    全局变量是定义在函数体和主函数的外面
    如果不对其进行初始化,编译器会自动给它赋值为0
    全局变量的作用域是从定义行开始到整个文件的结束
    当局部变量和全局变量同名的时候,全局变量就会不起作用,程序只是用其所在作用域内定义的局部变量
    用static修饰的局部变量称为静态局部变量,静态局部变量的生命周期会延长到程序运行结束,但是作用域依然只是在函数体的内部

指针:

    - 指针就是地址,地址就是字节在存储中的编号
    - 指针变量:专门存储地址的变量,简称为指针
    - 指向:指针变量p中保存另一个变量x的地址时,就说该指针变量指向变量x
    - 引用:使用指针操作(赋值、访问)其指向的变量
    - 指针做函数参数,可以实现地址传递
    - 指针作为函数返回值的类型:返回一个地址,当返回一个局部变量的地址时,该局部变量会被释放,从而造成返回的地址变成无效地址
    - 指针变量的存储空间,与操作系统的位数有关
    - 数组作函数形参:当数组作函数形参的时候,系统会将其编译成指针变量

预处理:

  • 在编译之前对源程序进行的处理工作
  • import:将其后的.h文件包含进来
    <>:直接到系统文件夹中找要包含的.h文件
    “”:双引号是先到工程文件夹中找.h文件,如果没有,再到系统文件夹中找
  • 宏:本质上是一种替换操作
    带参宏的使用注意事项:
    宏函数中的参数一定要用括号括起来,以防止替换后的优先级问题
    宏函数中的整个表达式也需要用括号括起来,以防止替换后的优先级问题
    宏函数中有多条语句时,应写成复合语句,以防止变量的重定义问题
    调用宏函数时不要使用++、—作为实参
    宏函数之间可以相互调用

结构体语法:

  • 结构体是程序员自己定义的一种数据类型
  • 结构体变量的成员叫做成员变量,成员变量只能逐个赋值,不能整体操作
  • 点是一个成员运算符
  • 通过指针对成员变量赋值时,需要使用->这个成员运算符
  • 结构体作函数形参也分为值传递和地址传递

枚举:

  • 只出现在编译器中,运行时直接被替换成相对应的整形值
  • 枚举中只能定义常量,枚举常量可以指定值
  • 枚举常量只能是整数值,不能为小数
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容