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的语句集先于其他语句编译。