初学C语言系列之C语言基础(3)

目录

数组

数组的定义

数组的下标

数组的使用

运算符

运算符及说明

关键字

关键字及说明

关键字typedef

 关键字static

修饰局部变量

修饰全局变量

修饰函数

关键字register

#define定义常量和宏

指针

内存

指针的定义

指针变量的定义

指针变量的大小

结构体

结构体定义

结构体的使用

数组

C语言中数组是一组同类元素的集合。

数组的定义

int  arr[10]={1,2,3,4,5,6,7,8,9,10};

 上面定义了一个最多放10个元素的整型数组。

数组的下标

数组的每个元素都有下标,从0开始到n-1结束(n是数组元素的个数)。

数组是通过下标来使用的。

数组的使用

int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
    int i=0;
    for(i=0;i<10;i++)
    {
        printf("%d  ",arr[i]);
    }
    return 0;
}

运算符

运算符及说明

单目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

访问数组元素,操作数 数组名[变量]

()

圆括号

(表达式)/函数名(形参表)

1、表达式优先级

2、函数名

.

成员选择(对象)

对象.成员名

结构体使用

->

成员选择(指针)

对象指针->成员名

结构体指针使用

++

后置自增运算符

++变量名

单目运算符,先使用后自增

--

后置自减运算符

--变量名

单目运算符,先使用后自减

2

-

负号运算符

-表达式

右到左

单目运算符,改变正负

(类型)

强制类型转换

(数据类型)表达式

++

前置自增运算符

变量名++

单目运算符,先自增后使用

--

前置自减运算符

变量名--

单目运算符,先自减后使用

*

取值运算符

*指针变量

单目运算符,对指针变量进行解引用,找到指针变量所指向的对象

&

取地址运算符

&变量名

单目运算符,取得地址

!

逻辑非运算符

!表达式

单目运算符,对表达式的值取反,0为假,非0为真(负数也为真)

~

按位取反运算符

~表达式

单目运算符,对数据的二进制位进行取反

sizeof

长度运算符

sizeof(表达式)

单目运算符,计算对象类型的长度

3

/

表达式/表达式

左到右

双目运算符,

1,整数除法,表达式的结果都是整数

2、浮点数除法,任一表达式是浮点数

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符,求任一整数的余数,表达式必须为整数

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量<<=表达式

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算,表达式的结果为最后一个计算的结果

关键字

关键字及说明

数据类型关键字(12个)
1

char

声明字符类型变量,数组,函数等
2short声明短整型类型变量,数组,函数等
3int声明整型类型变量,数组,函数等
4long声明长整型类型变量,数组,函数等
5float声明单精度浮点类型变量,数组,函数等
6double声明双精度浮点类型变量,数组,函数等
7struct声明结构体类型变量,数组,函数等
8enum声明枚举类型变量
9union声明联合体类型变量,数组等
10void声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
11signed有符号型数据
12unsigned无符号型数据
控制语句关键字(12个)
13for创建for语句循环循环语句
14do创建do while语句循环
15while创建while或者do while语句循环
16break跳出当前循环或跳出switch语句
17continue结束当前循环,开始下一轮循环
18if创建if条件语句条件语句
19else控制if语句分支
20goto直接进行跳转(不受限制)
21switch创建switch语句
22case控制switch语句分支
23default控制switch语句的其他分支
24return结束函数运行并返回函数的计算结果返回语句
存储类型关键字(4个)

25

auto自动,局部变量自动创建自动销毁
26extern声明引入其他文件的变量,数组,函数等
27register声明寄存器,但本质只是建议将变量放入寄存器
28static声明静态变量
其它关键字(4个)
29const声明只读变量
30sizeof计算数据类型的长度
31typedef类型重命名
32volatile说明变量在程序执行中可被隐含地改变c

关键字typedef

typedef unsigned int uint;

int main()
{
    uint num=32;
return 0;
}

 关键字static

修饰局部变量

被修饰的局部变量被称为静态局部变量

static int num;

修饰后局部变量的生命周期发生改变,由原来的进入作用域开始,出作用域结束变为出作用域不结束,知道整个工程结束才结束,类似于全局变量

改变的原因是static修饰后的变量并不是放在栈区中,而是放入了静态区。

 static修饰的变量,通过反汇编观察,可以看到编译期间才创建,执行期间不创建。

修饰全局变量

全局变量拥有外部链接的属性,在一个源文件中创建的变量,可以在另一个源文件中声明和使用。

static修饰后,全局变量不再具有外部链接属性,也就是不能跨文件引用,相当于将全局变量的作用域变小了。

修饰函数

函数拥有外部链接的属性,在一个源文件中创建的函数,可以在另一个源文件中声明和使用。

static修饰后,函数不再具有外部链接属性,也就是不能跨文件引用,相当于将函数的作用域变小了。

对于全局变量和函数,static改变了他们的链接属性

关键字register

register是寄存器关键字,作用是建议将变量放入寄存器中。

上图是数据的读取过程,注意寄存器是集成在CPU上

#define定义常量和宏

#define的作用是给实际内容定义标识符,相当于起了个别名

#define MAX 100

#define ADD(x,y) ((x)+(y))

定义后编程时可以直接使用标识符,程序编译阶段会替换成实际内容

指针

内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中运行的。

为了有效的使用内存,把内存划分成了一个个小的内存单元,每个内存单元的大小是1个字节。

为了能够有效的访问到内存的每个单元,就给内存地址编了号,这些编号被称为该内存单元的地址。

 实际中内存有32根地址线和64根地址线,32根地址线对应32位电脑,一共有2^32个地址,64根地址线对应64位电脑,一共有2^64个地址。

变量是创建在内存中的,所以每个变量都有一个地址,该地址是变量所占内存单元的首地址。

指针的定义

指针就是地址。

指针变量的定义

指针变量是存放指针的变量。

int *p=&a;
char *pc=&c;

int  *  p中,p是指指针变量的名称,*是说明p是指针变量,int说明p指向的对象是int类型 。

全局变量在编译时创建,局部变量在运行时创建。

指针的意义,通过地址找到指针变量所指向的对象,*p就是p所指向的对象。

指针变量的大小

指针变量的大小以地址的大小为准

32位系统中,地址的长度是32位,所以是4个字节。

64位系统中,地址的长度是64位,所以是8个字节。

结构体

结构体是把单一的类型组合在一起的自定义类型

结构体定义

struct stu
{
    char name[30];
    int age;
}

结构体的使用

结构体使用需要"."和"->"符号

"."用来连接结构体变量名和成员名。

"->"用来连接结构体指针名和成员名。

作用都是找到结构体的成员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值