C语言基本框架,浅识C语言。

目录

 

一.常量和变量

1常量:

<1>字面常量

<2>const修饰的常变量 

<3>define定义的标识符常量

 <4>枚举常量

2变量:(数据类型 + 变量名称)

<1>命名规则

<2>数据类型及其大小

​编辑

<3>变量的分类

 <4>作用域和生命周期

二.字符串和数组

1字符串

<1>定义方法

<2>字符串的结束

 2数组

<1>数组的定义

 <2>数组的下标和使用

 三.转义字符

四,选择语句和循环语句

 1选择语句

2循环语句

五.函数

六.操作符

 

1算术操作符

2移位操作符

3位操作符

4赋值操作符

5单目操作符

6关系操作符

7逻辑操作符

8条件操作符

9逗号表达式

10其他

七.关键字

1 typrdef,可将数据类型重命名

2 static 

<1>修饰局部变量,可以改变局部变量的生命周期(不改变作用域)

<2>修饰全局变量和函数

八.define定义的常量和宏

1 define定义的常量(已经在前面了解)

2define定义的宏

九.指针

1 取出变量地址

2 指针的简单使用

3 指针变量的大小 

十.结构体


框架:

c4f27b1dfba54090bd657e462dd174d5.png

 

一.常量和变量

常量:

 

<1>字面常量

顾名思义,就是我们直接写出的一些数字或字符。

 

<2>const修饰的常变量 

即一个变量被const修饰后变为一个具有常属性的变量,也就是说,被修饰的变量的数值不能改变,但其本质还是一个变量。上栗子:

 

1c4c9f561775404c86376127dbcfaa71.png

 

 可以看到,当我试图改变a的值时,编辑器已经报错,说明const修饰的变量的值是不可改变的。

33c08c363c144df98c269ff44caec507.png

 

因为数组下标[]中一定是一个常数,编辑器报错,由此判断:const修饰的变量本质还是变量。

<3>define定义的标识符常量

23d317cd4d6541a0aaed192e13678fc5.png

 所以,define定义的标识符常量的值同样不可改变

 <4>枚举常量

a51509c6da5041a6968ffa22e6025484.png

 这个例子中red,green,blue是枚举类型Color的可能取值,同时也是常量,所以叫枚举常量,red初值是0(也可以人为给它赋初值),green blue的初值依次增加。

常量适合描述生活中不可改变的东西,比如血型,性别(暂时这么认为),三原色等等。当我们遇到会改变的量时就可以用变量来描述。


2 变量:

 

<1>命名规则

变量名可以由字母数字和下划线_组成,但是只能由字母和下划线_开头,并且变量名严格区分大小写,名称一定不可以与关键字重复。

 

<2>数据类型及其大小

4db9dc6f2fdc469aae608e3b4a33671a.png

注意:

对单精度浮点数变量赋值时,如:float a = 1.2,此时a是一个双精度浮点数,需要在1.2后面加上f。

即float a = 1.2f。

 

long的大小为 4 byte,并不意味着它和int类型大小相等,而是至少大于 4 byte。

 

<3>变量的定义

数据类型 + 变量名 = 初始值

例如:

double pie = 3.14159

 

<4>变量的分类

局部变量:在{}内定义的变量,出{}就释放

全局变量:在{}外定义的变量,可以在整个工程使用。

54e9c74efca0450f8c3b2a7f92ff42c4.png

 

如果要引用其他源文件的变量或函数,要用extern来声明:

28bf87a34ad8448c8eb14784b9b1b85d.png

 

 若全局变量和局部变量名冲突,局部优先。

a779e590772b4e1c833716aca762fc48.png

 

 <5>作用域和生命周期

作用域:作用域是在运行时,代码中的某些特定部分中的变量,函数和对象的可访问性。

全局变量的作用域是整个工程,局部变量的作用域是其所在的代码块(即所在的{ }内)。

生命周期:变量保留其值的时间被称为生命周期。


二.字符串和数组

 

1字符串

<1>定义方法

char arr1[] ="be"

char arr2[] = {'b','e'}

<2>字符串的结束

e5ef3c4d8c86443395d94d3cd6ccb69b.png

 

字符串是以\0为结束标志的,因为arr1用双引号定义字符串,自动把\0隐藏,而arr2这种定义方法不包含\0,所以在打印字符串的时候,arr2会出现乱码。但是,\0并不算入字符串长度。

6b78ad3fee99470ca5207e2518cbe048.png

 2数组

 数组其实和字符串有很多相似之处。

<1>数组的定义

int ch[10] = {0}

这里的“10”表示数组中有10个数,{ }中的0是给第一个元素赋的初值,其他元素未赋初值,默认为0

 <2>数组的下标和使用

7fc6b3f81b584e44accc236ebe052477.png

注:这里使用了for循环,实现了打印数组中的所有数的目的。不懂也没关系,后面会介绍到。

 数组中的一个元素为ch[0],以此类推,第n个元素为ch[n-1]。

 三.转义字符

979103103f98409aa5b79319166be265.png

 我们最常用的就是“\n”换行转义字符,其他转义字符,大家可以在需要用的时候查表。

eg:请计算下面字符串的长度:

        c:\test\628\test.c

解答:

'c',  ':',  '\t',  'e',  's',  't',  '\62',  '8',  '\t',  'e',  's',  't',  '.',  'c',共14个字符,长度为14.

四,选择语句和循环语句

注:我们这期主要是认识C语言,这里只介绍if选择语句和while循环语句。

2c64d3056c294dd7bfc2b773357fbabc.png

 1选择语句

例中,通过if对n的值的判断,进行了不同的程序的执行。大家可以参照例子自己设计一个选择语句。

 

2循环语句

while通过判断( )内的条件是否为真决定是否执行循环,若条件为真则执行循环体,若条件为假,跳出循环。例子中,通过判断scanf函数的返回值实现多次循环输入,直到输入的不是数字时循环结束。

 

五.函数

函数可以简化代码,重复使用。

下面是小灿写的一个通过函数计算n的阶乘的程序

383cc5275ec247eca365d2bbfac95000.png

 注:n--是自减符,在这期的操作符会介绍

1int fac(int n),前面的int表示函数的返回类型为整数,fac是函数名,( )内定义的变量n为形参。

2后面{ }内是函数体,也是函数的核心。

3调用函数时,只需 函数名(变量)

大家也可以自己设计一些简单的加减函数来熟悉函数的使用。

六.操作符

 

1算术操作符

+        -        *        /        %

2移位操作符

>>        <<

3位操作符

&        ^        |

4赋值操作符

=        +=(a+=1与a=a+1等价,后面同理)        -=        *=        /=        &=        %=        |=        ^=        <<=        >>=

5单目操作符

!      逻辑反操作
-      负值
+      正值
&      取地址
sizeof    操作数的类型长度(以字节为单位)
~      对一个数的二进制按位取反
--      前置--(先赋值再自身-1)、后置--(先自减再赋值)
++      前置、后置++(同--)
*      间接访问操作符(解引用操作符)
(类型)    强制类型转换

6关系操作符

>        <        >=        <=        ==(判断两个数是否相等,=是赋值)        !=(不相等)

7逻辑操作符

&&  (逻辑或)      ||(逻辑非)

8条件操作符

exp1?exp2:exp3

先判断exp1是否为真,若是真执行exp2,若是假执行exp3。

9逗号表达式

exp1,exp2,...,exp n

从exp1开始依次执行,最后将exp n赋给变量

eg:int a = 0;int b = 2;int c = 5;

        a = 1,b += c,a = b*c     的结果为35

10其他

成员运算符  ->        下标运算符[ ] 等

一些操作符大家不熟悉,以后用到时小灿会和大家分享。

七.关键字

auto  break  case  char  const  continue  default  do  double else  enum 
extern float  for  goto  if  int  long  register   return  short  signed
 sizeof  static struct  switch  typedef union  unsigned  void  volatile  while

我们这里先介绍两个关键字typedef 和static,其他的我们还会分享

1 typedef,可将数据类型重命名

3929df065755488294a6211a902cdddf.png

2 static 

<1>修饰局部变量,可以改变局部变量的生命周期(不改变作用域)

363fd62022bd4b2eb354f8bdc292f63a.png

 这两个程序运行结果有什么区别呢?

右边的程序在i完成自加后就释放,所以运行结果是10个1;左边程序i被static修饰,在完成自加后保留,所以运行结果为1到10。

<2>修饰全局变量和函数

我们在前面讲过全局变量的引用,当要引用函数在同一工程的不同源文件时,需要用extern声明。

当被static修饰时,无法引用。

八.define定义的常量和宏

1 define定义的常量(已经在前面了解)

2define定义的宏

77df8ff1f7474d4ea21d3f5b95c9edec.png

这里,define定义的宏和加法函数的作用一样,都可以计算两数之和。

但为什么宏体要写成((x)+(y))呢?因为宏只是把宏体等价。

例如5*add(2+3,4)等价5*((2+3)+(4)),如果宏体是x+y,结果就变成     5*2+3+4,计算发生错误。

九.指针

指针其实和地址相同,我们日常生活中会对旅店的房间进行编号,计算机也一样,要把内存分为很多的内存单元分别进行编号,这些编号就是内存单元的地址。

1 取出变量地址

ddd386f466824e7184b23b55d958ca3a.png

&是取地址,003FFE00就是a的地址。 

2 指针的简单使用

405407baa35c426ba5ffa03a68d41acb.png

int* p是定义的一个指针变量,它可以存储地址;*p是解引用,可以通过找到a的地址进行赋值。

3 指针变量的大小 

指针变量的大小取决于地址的大小:
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)

十.结构体

结构体可以用来描述复杂类型,例如描述个人信息:

c6d2a635521d49ce8261de49217743e8.png

这期分享到这里就结束了,希望大家多多关注支持!

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值