C基础知识学习及总结

1、导读

高级语言学习思路的方法与脚本语言不同。高级语言需要学习它的基本语法、类型和一些结构,需要系统的学习,例如c语言,你可能要学习它的基本类型、条件语句、基本结构和一些函数指针,而且学习c语言到最后可能你都知道但是就是写不出来代码(没有你不知道的,只有你不会写的)。而脚本语言学习思路可能就是需要通过案例和实际情况来进行学习了,语法很少。

2、基本语法

针对c语言的学习,需要从基本语法学习对该语言有个初步的认识,然后对其进行提高和强化:提高部分、强化部分。本文章针对基本语法进行总结,后续文章将对提高和强化部分进行总结。基本语法中包括了基本数据类型、条件判断语句、数组和字符串、函数、指针、内存管理、复合类型。

2.1 数据类型

该部分针对c语言中的基本数据类型进行总结。其中总结思路包括数据类型的概念、作用及定义和使用。基本数据类型以所占内存大小分:char、short、int、long、long long、float、double类型。还有运算符:+、-、*、/;

2.1.1 基本数据类型

该部分包括常量:宏定义常量;字符常量;const常量(c语言中的const是一个伪常量:可以通过指针间接修改,c语言中定义常量一般用宏定义)。该部分基本数据类型包括字符型、整型、浮点型。包括内容包括基本的数据所占字节、使用。还有进制及进制之间的转换:除k取余再反转。进制包括:二进制、八进制、十进制、十六进制以及进制的原码、反码和补码。类型限定:const、volatile、register。

2.1.2 基本运算

该部分包括了算术运算(加减乘除取余)、关系运算(大于小于等于、大于等于、小于等于)及逻辑运算(与或非)

2.2 条件判断语句

该部分主要通过三种结构进行展开:顺序结构、分支结构、循环结构。表达式及语句。
顺序结构就是按一定顺序进行执行。
分支结构就是通过判断来进行分开执行(是并列的,有可能执行了这个就不执行另一个)。该结构需要用到:if…else;switch…case。
循环结构:for;while;do…while。
这些结构可以互相嵌套。

2.3 数组和字符串

该部分是对基本数据类型的一个补充。通过数组来定义多个基本数据变量。数组在内存中连续的相同类型的变量空间。注意:数组名是一个地址常量(不能做左值)。
数组的定义和初始化。字符串和字符数组的区别:字符数组是一个有大小概念的类型,该字符数组可能是字符串,但通过对内部变量进行赋值为0时需要注意:字符数组的大小可能没有发生改变但是字符串有可能发生改变了。

2.4 函数

该部分主要介绍字符串string中常见的函数。函数及变量都有三要素:变量:变量类型、变量名、变量值;函数:函数返回类型、函数名、函数参数(参数类型及参数名(有时候函数中可以不用函数名))。注意形参和实参的传递方向。
函数调用及函数递归:函数调用是通过另一个函数a调用另一个函数b。函数递归是函数a调用函数a。递归函数的使用需要注意内存消耗及退出条件,有时候递归函数的不当使用会使系统崩溃。

2.5 指针

该部分主要介绍指针、指针使用(c语言的半壁江山是指针,另半壁江山是回调函数)。
指针的基本概念:指针也是变量,存放的是一个地址,该地址指向一块内存空间,是一种数据类型。
需要注意sizeof指针变量的大小和指针类型没有关系与系统有关,即sizeof指针变量的大小是该指针变量所占的内存空间:32位系统下是4个字节,64位系统下是8个字节。
常量指针和指针常量:const int *p:常量指针:它是一个指针,但是所修饰的内存(指针所指向的内存)是常量,即不可以通过该指针改变所指向的内存空间的值。
int *const p:指针常量:他是一个常量,即定义时就进行初始化该指针,并且该指针是不可以改变的,但是可以通过该指针改变所指向的内存的值。
指针数组:int *a[5] = {NULL};没有个成员都是指针。

2.6 内存管理

该部分主要通过作用域及内存四区来进行总结。
每个变量及函数都有作用域:代码块、函数或文件作用域。
一个程序运行时所占用的空间可以通过内存四区进行分析。
内存四区可以分为:代码块、data段(.ro段(只读数据、常量)、全局区或静态区(.rw段(初始化不为0的全局变量或静态变量)、.dss(未初始化或初始化为0的全局变量或静态变量)))、堆区和栈区。
堆区的分配:malloc、calloc、realloc、释放free。

2.7 复合类型:结构体、联合体、枚举与自定义类型

结构体(struct)的定义(1、先定义类型再定义变量;2直接定义变量)及初始化。
联合体(union)的定义及使用(内存占用情况)。
枚举类型(enum)定定义接默认值。
自定义类型:可以使用typedef定义自己需要的类型。

3 总结

最后文章总结见:
https://download.csdn.net/download/zhaoyinlo3/12911759

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值