射频和无线供应商和资源的家

一站式满足您的射频和无线需求

C编程语言教程- page1

作品简介:

C程序设计语言教程涵盖C变量数据类型,控制流语句,算术,逻辑,关系操作符,C函数声明和定义,数组,指针,结构,联合,类型定义,enum等基础知识。

参考以下页面浏览完整的C教程。
C语言页面1
C语言页面2
C语言page3
C语言页面4
C语言页面5

C变量数据类型

下表总结C变量数据类型、C关键字、大小(字节)和范围。

数据类型 C字 大小(字节) 范围
字符 字符 1 -128 ~ 127
整数 int 2 -32768 ~ 32767
短整型 2 -32768 ~ 32767
长整数 4 -2,147,483,648至2,147,438,647
无符号字符 无符号字符 1 0 ~ 255
无符号整数 无符号整型 2 0 ~ 65535
无符号短整数 无符号短 2 0 ~ 65535
无符号长整数 无符号长 4 0 ~ 4294967295
单精度浮点 浮动 4 1.2E-38到3.4E381
双精度浮点 8 2.2E-308至1.8E3082

C语言的控制流语句

下面是一些控制流循环,类似于其他编程语言的选择语句。

For循环:
For(首字母;条件;增量)

语句(一个或多个);


例如,
(我= 0;< 10;我+ +)



While和Do While:
While(条件检查)

语句;//一个或多个




语句;//一个或多个

而(条件检查)

If else语句:
If (conditioncheck1)

//语句(一个或多个)

Else if(conditioncheck2)

//语句(一个或多个)

Else if(conditioncheck3)

//语句(一个或多个)


其他的

//语句(一个或多个)

Switch语句:
开关(条件)

Case condition1: //语句
Case condition2: //语句
Case condition3: //语句
默认值:/ /语句


可以在每种情况中插入break语句,从而使程序控制脱离特定情况。

Break语句
将程序控制从循环中取出或函数已被调用。

继续
在switch语句中,当在循环中调用时(while, for),它会导致循环的下一次迭代执行。

Operators-Arithmetic、逻辑关系

算术运算符:
除了+
减法,
乘法*
部门/
模量%
增量+ +
减量,


关系运算符
= = =
大于>
小于<
大于等于>=
小于或等于<=
不相等!=

逻辑运算符
和& &
或| |
不!

按位逻辑运算符:
&位与
|位包含或
^位异或
<<左移
>>右移
补足某人

复合赋值操作符:
A +=b可以写成A = A +b。这就是(+=)所谓的复合赋值运算符。下面概述一些操作符,等等:
除了+ =
Substration - =
位与赋值&=
按位左移<<=

成员和指针操作符
数组下标:a[0]
间接(a指向的对象):*a
参考(a地址):&a
结构解引用(a指向的对象的成员b): a->b
结构引用(对象'a'的成员'b'): a.b.

其他运营商
函数调用:a(a1,a2)
逗号:a、b
三元条件:a?b: c
运算符:Sizeof (a)
类型转换:(类型)a

C函数声明/定义

功能:
•C模块
程序将用户定义的函数与库函数结合在一起
•C标准库具有广泛的功能
函数调用:
调用函数:
•提供函数名和参数(数据)
函数执行操作或操作
函数返回结果
函数调用类比:
老板要求员工完成任务
•Worker获取信息,执行任务,返回结果
•信息隐藏:老板不知道细节

任何扩展名为。c的文件都被称为c文件。任何c文件都按照c程序结构包含函数和变量。

函数声明:
return_valuefunction_name (arg_1,…,arg_n);

函数定义
Return_value function_name(arg_1,…,arg_n);


/*C语句和局部变量如果有,应以分号(;)*/结束

例如函数原型声明,
Doublecube_number (int number);
Number是int类型的实参。可能会有不止一个论点。
函数名为cube_number,用于计算一个数的立方并返回double类型的值。

通过使用称为“引用传递”的概念,可以将多个值作为参数传递给一个函数,或者从一个函数返回多个值。我们在上面看到的是按值传递。在传递中,引用指针用作函数的参数或指针用作返回变量。指针指向数组或结构或联合的起始地址,因此所有元素都可以轻松访问。

数组

数组将相似的数据类型元素存储在连续的内存位置。
一维阵列
#定义大小为10的arr_size
Int array[arr_size] = {1,2,3,4,5,6,7,8,9,10};
多维阵列
#定义no_rows
#定义no_cols
int数组[no_rows] [no_cols] ={{1,2,3},{4、5、6},
{7,8,9}, {10,11,12}};

指针

指针存储一些数据类型元素的地址,例如int, float, char, char字符串,结构,联合,数组或任何C函数。因此使用指针一旦指针被初始化,就可以直接访问各自的数据类型。

typename * ptr;
Typename可以是指针所指向的任意c变量类型

例如,
int * p1;p1是指针,指向int变量数据类型

指针初始化:
int employee_number;
int arr [10];
Int *ptr1, *ptr2;

ptr1 = &employee_number;
ptr2 = arr;//数组名称本身指向内存地址,没有& required

结构

结构包含一个或多个不同类型的变量。由于不同的变量类型由一个公共变量分配,因此便于管理结构的名字。所有结构变量都连续存储在内存中。结构体也可以容纳另一个结构体作为成员。

struct emp_record
{字符名称[10];
int [12];
浮动工资;
};

在这里结构Name是emp_record, Name、number、salary是结构成员变量/元素。为了访问结构成员,变量到结构的声明如下所述。它可以是简单的结构变量,也可以是指向结构的指针变量。

Struct emp_record employee;// employee是结构emp_record的实例
结构emp_record *ptr;// PTR是指向结构emp_record的指针

如果instance是非指针,可以使用(.)操作符访问结构成员元素。如果instance是指向结构体的指针,则可以使用(->)操作符访问。

例如,
name或雇员。号码或雇员。工资
ptr->名称或ptr->编号或ptr->工资
PTR = &员工;//指针需要初始化结构的内存位置地址

联盟

Union类似于结构,在内存中分配大小的区别和这里在Union中使用的关键字代替struct。

联盟emp_record

char[10]名称;
int [12];
浮动工资;
};

如果上面的声明和实例是相同的结构,那么它在内存中分配大约7个字节(1个字节用于char,2个字节用于int, 4个字节用于float)。

如果相同的声明和实例用于联合,则分配的大小为成员变量的最大大小(这里为Salary,因此为该联合分配的大小为4字节)。在这里,内存中分配的大小每次由一个成员变量使用。

类型定义

Typedef是一个关键字,用于创建某些变量类型的同义词。它主要用于创建结构/联合的同义词。因此,通过一个简单易记的名称来调用结构就变得很容易,而不是一直调用整个结构/联合。因此,它使C程序中的代码行数最小化。

例如,
类型定义结构体{
char[10]名称;
int [12];
浮动工资;
} emp_record;

因此,这里emp_record是以下代码行的同义词标识符。
结构体{
char[10]名称;
int [12];
浮动工资;

枚举类型

enum employee_num {Rahul,Ramesh,Roopesh};
根据C自动分配的枚举符,Rahul=0, Ramesh=1, Roopesh=2

起始值可以预配置如下
枚举employee_num{拉胡尔= 100,拉梅什,Roopesh};

条件表达式

C提供了表示单个if-else语句的简单方法,如下所示。
如果(a > b)
z =一个;
其他的
z = b;

以上可以用一个条件表达式表示,z=(a>b)?a: b
这里如果>b为真,那么z=a,如果>b为假,那么z=b。

预处理器指令

预处理器语句在实际编译C程序之前执行。C语言中的所有预处理器指令都以#开头(这是一个磅号)。
你一定见过#include预处理器指令,它在所有C程序中都包含C头文件。

另一个常见的预处理器指令是#定义指令,它将任何字符串替换为某个值或字符串。
例如,
#定义圆周率3.1428
#定义CITY_NAME“BANGALORE”

另一个预处理器指令是# ifdef而且# endif

# ifdef MACRO_N
stat1
stat2
-----
statN
# endif

如所示,MACRO_N是使用#define指令定义的,这里基于MACRO_N的语句集先于其他语句编译。


分享本页

翻译本页
Baidu