- 博客(70)
- 收藏
- 关注
转载 4. 声明符
4. 声明符 声明符有简单的变量标示符、数组([]结尾)、指针(*打头)和函数(()结尾)。 该博客教程视频地址:http://geek99.com/node/1036 转载于:ht...
2014-05-13 17:51:00
126
转载 3. 类型限定符
3. 类型限定符 类型限定符有const和volatile,const声明的变量不能被修改,volatile大部分用在底层编程中,例如嵌入式程序中。 该博客教程视频地址:http://geek99.com/node/1035 ...
2014-05-13 17:49:00
156
转载 2. 存储类型
2. 存储类型 存储类型有4个 auto、static、extern和register,这4个都可以放在变量前面,放在函数前面的只有两个extern和static2.1 变量的特性每个变量都有3方面特性:存储期限,变量的存储期限决定了变量在内存中存在的时间,自动存储期限的变量在所属块程序被...
2014-05-13 17:30:00
127
转载 1. 声明的语法
1. 声明的语法 声明的语法格式是:声明说明符 声明符 例如:extern const unsigned long int a[10]; 前面部分extern const unsigned long int为声明说明符 后面a[]为声明符声明说明符分为三类:存储类型:4个 auto、sta...
2014-05-13 17:27:00
134
转载 1. 声明的语法
1. 声明的语法 声明的语法格式是:声明说明符 声明符 例如:extern const unsigned long int a[10]; 前面部分extern const unsigned long int为声明说明符 后面a[]为声明符声明说明符分为三类:存储类型:4个 auto、sta...
2014-05-13 17:16:00
182
转载 3. 构建多文件程序
3. 构建多文件程序 案例-在线电子商务在这个案例中我们有四个模块:商品、客户、订单和购物车,我们将根据这些模块来定义不同的头文件和源文件。商品的头文件和源文件:product.h#ifndef C_15_01_product_h#define C_15_01_product_h// ...
2014-05-13 17:14:00
153
转载 2. 头文件
2. 头文件 2.1 使用头文件共享宏定义和类型定义我们一般将程序中使用到的宏定义和类型定义,写在头文件中,使用时直接包含头文件即可。例如,可以定义一个global.h 头文件,在其中定义一些全局宏定义和类型定义。#ifndef C_15_01_global_h#define C_15_...
2014-05-13 17:13:00
99
转载 1. 头文件简介
1. 头文件简介 1.1 到目前为止,我们所写的程序都在一个源文件main.c中,但是实际项目当中可能有成千上万个源文件。我们可以想象一下如果开源Linux操作系统中只有一个main.c源文件该如何实现。大型项目中将会按照不同的模块分为多个源文件,例如做一个在线电子商务项目,可以有客户、订...
2014-05-13 17:10:00
89
转载 5. 构建C程序
5. 构建C程序 C程序的结构如下:#include#define类型定义外部变量函数声明main函数函数定义例如:/*文件包含指令*/#include <stdio.h>/*宏定义*/#define TRUE 1#define FALSE 0/*类型定义*/typedef i...
2014-05-13 17:09:00
129
转载 4. 作用域
4. 作用域 在C程序中同一个标示符可以重复出现,并且根据出现的位置具有不同的意义。例如,下列代码,变量i重复出现多次,但是意义各部相同。/*全局变量,静态存储期限、文件作用域*/int i;/*形参,自动存储期限、程序块作用域*/void f(int i){ i = 1;}void...
2014-05-13 16:59:00
56
转载 3. 程序块
3. 程序块 程序块是大括号包含起来的部分{}。函数体内的多条语句构成程序块,程序块也可以是条件语句或循环语句中的多条语句。在程序块中的变量具有自动存储期限,和程序块作用域。 该博客教程视频地址:http://geek99.com/node/1025 ...
2014-05-13 16:45:00
147
转载 2. 外部变量
2. 外部变量 函数直接可以通过参数传递的方式来通信,可以可以通过外部变量的方式来通信。外部变量,也称为全局变量,是定义在函数外部的变量。外部变量具有静态存储期限和文件作用域。在程序运行期间,保存在外部变量的值将一直存在。在整个文件中的各个函数都可以访问外部变量。/* 全局变量*/int ...
2014-05-13 15:57:00
382
转载 1. 局部变量
1. 局部变量 在函数体内,或者是形参都是局部变量。局部变量具有自动存储期限和块作用域。#include <stdio.h>/* 交换连个数 */void swap(int a,int b){ printf("a=%d,b=%d\n",a,b); int tmp;...
2014-05-13 15:41:00
73
转载 3. 枚举
3. 枚举 枚举(enumeration),也称为枚举常量,允许程序员定义一组有关联关系的常量。例如,程序中要定义三种颜色常量:红色(RED)、绿色(GREEN)、蓝色(BLUE)。或者在游戏中定义玩家操作游戏的四个方向上(UP)、下(DOWN)、左(LEFT)、右(RIGHT)。enum...
2014-05-13 15:31:00
76
转载 2. 联合
2. 联合 和结构一样,联合(union)也可以有一个或多个成员,每个成员的类型也可以不相同。但是,编译器只为联合中最大的成员分配足够的内存空间。联合成员在这个空间中彼此覆盖。联合的定义和结构类似:union datetype { int i; float f; doub...
2014-05-12 19:11:00
82
转载 1. 结构
1. 结构 1.1 结构特性结构是一种复合类型,和之前的数组类似。不同的是数组中的数据类型相同,而结构中的数据可以不同。正是因为数组中保存的数据相同,所以可以通过下标(索引)来访问,而结构则不能通过索引来访问。1.2 结构变量的声明结构可以把相关联的变量保存在一起,这样会很方便。例如,我们...
2014-05-12 19:10:00
126
转载 3. 宏定义
3. 宏定义 3.1 宏定义的格式:#define 标示符 替换列表3.2 常见错误:#define N=10 /* 错误使用了等号(=)*/#define N 10; /*错误使用了分号(;)*/3.3 使用宏定义的优点:3.3.1 程序可读性更强,例如:在程序中使用AGE,比使用20,...
2014-05-12 19:08:00
116
转载 4. 条件编译
4. 条件编译 4.1 #if #endif#if #endif 会根据#if后面的条件来判定是否执行#if #endif直接的代码,例如:#define DEBUG 1void test6(){#if DEBUG printf("打印调试信息1\n"); printf("...
2014-05-12 19:08:00
71
转载 2. 预处理指令
2. 预处理指令 2.1 宏定义。#define指令定义一个宏,#undef指令删除一个宏2.2 文件包含。#include指令将包含当前文件到程序中。2.3 条件编译。#if、#ifdef、#ifndef、#elif、#else和#endif,将根据条件包含代码块到程序当中,或将代码块排...
2014-05-12 19:07:00
84
转载 1. 预处理的工作原理
1. 预处理的工作原理 预处理器可以在编译器对C程序编译之前,进行重新编辑(修改源代码)工作。这个过程包括:1.1 将使用#define指令进行的宏定义进行匹配替换1.2 将使用#include指令包含的头文件添加到当前文件中1.3 将预定义指令删除1.4 删除注释1.5 可以使用gcc ...
2014-05-12 19:06:00
1153
转载 5. 使用字符串库函数
5. 使用字符串库函数 5.1 计算字符串长度,函数原型如下:size_t strlen(const char *s);size_t 是一个无符号整型 unsigned int该函数返回第一个空字符\0前面的字符个数。#include <string.h>// 获得字符串长度...
2014-05-12 19:05:00
81
转载 4. 字符串的读写
4. 字符串的读写 4.1 可以使用printf和puts来输出一个字符串,printf提供了格式化输出,可以使用%s来输出一个字符串,还可以使用 %.ps 来输出字符串的一部分,p表示字符串的个数。puts只提供一个字符串参数,可以自动换行。// 使用prinf和puts写字符串void...
2014-05-12 18:51:00
134
转载 3. 字符数组和字符指针
3. 字符数组和字符指针 3.1 看下面两个声明char *str = "Hello World!";char str1[] = "Hello World!";3.2 字符数组和字符指针的区别1. 字符数组和任何其他数组一样,数组元素可以被修改,而字符指针保存的是字符串字面量,不能被修改。...
2014-05-12 18:40:00
82
转载 2. 字符串变量
2. 字符串变量 2.1 C语言使用字符数组保存字符串变量,最后以一个空字符’\0’结尾,注意:空字符’\0’和字符’0’的区别,空字符的ASCII值为0.2.2 假设字符串中要保存10个字符,那么我们应该设置字符数组的长度为11,因为,最后一个表示字符串的结束。#define STR_L...
2014-05-12 13:39:00
130
转载 1. 字符串字面量
1. 字符串字面量 1.1 字符串字面量是指使用双引号“”括起来的的字符序列,例如:“Hello World”。1.2 在C语言中,把字符串当做字符数组来处理,当遇到长度为n的字符串时,程序分配长度为n+1的数组来保存,最后一个字符表示字符串的结束’\0’.1.3 根据我们知道的数组和指针...
2014-05-12 13:38:00
2498
转载 12 字符串
12 字符串 1. 字符串字面量2. 字符串变量3. 字符数组和字符指针4. 字符串读写5. 使用字符串库函数 该博客教程视频地址:http://geek99.com/node/1008 ...
2014-05-12 13:37:00
95
转载 6. 函数指针
6. 函数指针 #include <stdio.h>#include <string.h>#include <stdlib.h>void f(int);void (*fp)(int);int main(void){ f(100);...
2014-05-12 13:36:00
123
转载 5. 链表
5. 链表 5.1 链表是由一连串节点组成的,其中每个节点都包含指向下一个节点的指针。struct node{ int value; struct node *next;};5.2 添加链表节点struct node *first = NULL;...
2014-05-12 13:35:00
60
转载 4. 释放内存
4. 释放内存 4.1 malloc等内存分配函数分配的内存,会在内存堆里面,如果一直分配就会造成内存耗尽的危险。4.2 分配的内存不再使用需要手动释放,释放函数是void free(void *ptr); int *a,*b; a = mall...
2014-05-12 13:33:00
73
转载 3. 动态分配数组
3. 动态分配数组 3.1 当编程时很难为数组估计大小,可以在运行程序时,动态为程序分配大小。3.2 动态分配数组大小和分配字符串大小相似,可以使用sizeof来计算数据类型占用的字节数,再来分配,例如:int *a = malloc(n*sizeof(int));3.3 可以使用 cal...
2014-05-12 13:32:00
135
转载 2. 动态分配字符串
2. 动态分配字符串 2.1 malloc函数原型,void *malloc(size_t size); size_t 是一个无符号整型。2.2 C中的字符占用一个字节大小,为n个大小的字符串分配空间,可以使用 malloc(n+1)来分配。多出的一个字节保存字符串结束符‘\0’。2.3 ...
2014-05-12 12:29:00
612
转载 1. 动态内存分配
1. 动态内存分配 1.1 C语言的数据结构,通常都是固定大小的,比如:数组有固定的大小,而每个元素也有固定的长度。这样对程序有一定限制,例如:我们要使用数组来保存一个班级的学生信息,数组的长度指定多大合适呢?太大浪费空间,太小不够用。这时候就会用到内存的动态分配。1.2 内存分配函数ma...
2014-05-12 12:21:00
82
转载 2. 使用指针操作数组
2. 使用指针操作数组 2.1 可以使用数组名作为数组第一个元素的指针。2.2 实例#include <stdio.h>void test_pointer1(){ int a[] = {1,2,3,4}; // a 表示数组第一个元素...
2014-05-12 12:20:00
111
转载 1. 指针的算术运算
1. 指针的算术运算 1.1 指针不仅可以指向普通的变量,还可以指向数组元素。例如:int a[10],*p;p = &a[0];1.2 指针指向数组元素后,可以通过访问指针来访问数组。例如:int a[10],*p;p = &a[0];*p = 10;printf("a...
2014-05-12 12:18:00
93
转载 3. 指针的赋值
3. 指针的赋值 3.1 指针的赋值是变量地址的赋值3.2 实例#include <stdio.h>void test_pointer(){ int i,*p,*q; p = &i; // 地址传递...
2014-05-12 12:07:00
94
转载 2. 地址运算符&和间接寻址运算符*
2. 地址运算符&和间接寻址运算符* 2.1 可以使用&获得变量的地址2.2 可以使用*获得指针指向的变量值2.3 实例#include <stdio.h>void test1(){ int i = 100; // p...
2014-05-12 11:55:00
526
转载 1. 指针变量
1. 指针变量 1.1 计算机的内存是按照字节来划分的,每个字节都有一个唯一的编号来标示,这个编号就是地址。1.2 程序中的每个变量由若干的字节组成,第一个字节的地址称为变量的地址。1.3 指针变量就是保持变量地址的变量。1.4 声明指针变量,是在变量前面加上一个星号(*),例如:int...
2014-05-12 11:54:00
48
转载 2. 多维数组
2. 多维数组 2.1 数组的维数可以有任意多,常用的时二维数组。2.2 二维数组以行列表的方式展现,例如:int a[5][9],该数组表示5行9列。2.3 实例#include <stdio.h>void test_array() { // 声明二维数...
2014-05-12 11:50:00
48
转载 1. 一维数组
1. 一维数组 1.1 数组是包含多个数据值的数据结构。1.2 数组中的每个数据值的类型都相同。1.3 数组中的每个数据值被称为数组中的元素(element)。1.4 可以通过小标(索引)的方法,来访问数组中的元素,数组的下标从0开始。1.5 声明数组,需要说明类型和元素数量,例如:int...
2014-05-12 11:32:00
76
转载 5. 递归调用
5. 递归调用 5.1 递归是指函数自己调用自己。5.2 使用递归的条件:1. 自己调用自己。2. 有结束条件,否则将出现死循环。5.3 使用递归实现阶乘。#include <stdio.h>// 使用循环实现阶乘void loop_fact1();// 使用递归实现阶乘int...
2014-05-12 11:25:00
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人