C语言程序设计进阶
文章平均质量分 63
JieQiong1
这个作者很懒,什么都没留下…
展开
-
1.1 整数类型
该系列是 浙江大学 翁恺 老师的 C语言程序设计进阶 的课程笔记1.占位大小#include<stdio.h>int main(){ printf("sizeof(char)=%d\n", sizeof(char)); printf("sizeof(short)=%d\n", sizeof(short)); printf("sizeof(int)=%d\n", sizeof(原创 2017-02-09 18:23:20 · 1243 阅读 · 0 评论 -
7.3 位运算
1.位运算&:与 如果 x = 1并且 y = 1,那么(x & y) = 1;否则 (x & y)= 0|:或 如果 x = 1 或者 y = 1,那么 (x | y)= 1;否则 (x | y)= 0~:取反 把0变成1,1变成0^:异或 如果 x == y,那么 (x ^ y)= 0;否则(x ^ y)= 1<<:左移 x << 1 等价于 x *= 2,左移后 右边补0原创 2017-03-05 18:02:17 · 630 阅读 · 0 评论 -
7.2 文件
1.用 < 和 > 做重定向file.c#include<stdio.h>int main(int argc, const char *argv){ int num; int i1 = scanf("%i", &num); int i2 = printf("%d\n", num); printf("%d:%d\n", i1, i2); return 0;}原创 2017-03-05 16:37:58 · 363 阅读 · 0 评论 -
7.1 printf与scanf
1.格式化的输入输出printf 返回输出的字符数 %[flags][width][.prec][hlL]typescanf 返回读入的项目数 %[flag]type 在要求严格的程序中,应该判断每次调用scanf或printf的返回值,从而了解程序运行中是否存在问题#include<stdio.h>int main(int argc, const char *argv){原创 2017-03-04 16:52:50 · 366 阅读 · 0 评论 -
6.3 大程序结构
1.多个 .c文件,如何编译main()里的代码太长,适合分成几个函数一个源代码文件太长,适合分成几个文件两个独立的源代码文件 不能编译成一个可执行程序之前我们写的代码,是放在一个.c文件中,如果main写在一个.c文件中,max()写在一个.c文件中呢?2.项目新建项目: Devcpp中 文件 —— 新建 —— 项目 —— Console Application对于项目,Devcpp原创 2017-03-04 14:49:48 · 373 阅读 · 0 评论 -
4.1 结构类型——枚举
1.枚举枚举是一种用户定义的数据类型,关键字是 enum,语法是: enum 枚举类型名字{名字0, … , 名字n};枚举类型名字 通常并不真的使用,用的是 大括号里边的名字(它们是常量符号,类型是 int,值依次是 0 到 n-1)enum colors{red, yellow, green};创建了3个变量,red的值是0,yellow的值是1,green的值是2当需要一些可以排列起原创 2017-02-16 11:27:56 · 315 阅读 · 0 评论 -
3.2 字符串函数的实现
1. strlen需要引入 string.h 头文件#include <string.h>1.1 使用strlensize_t strlen(const char *s); 返回 s 的字符串长度(不包括结尾的 \0)#include<stdio.h>#include<string.h>int main(int argc,char const *argv[]){ char line[]原创 2017-02-15 16:46:42 · 415 阅读 · 0 评论 -
3.1 字符串操作
1. 单字符输入输出1.1 putcharint putchar(int c)向标准输出 写一个字符返回写了几个字符,EOF(-1)表示写失败1.2 getcharint getchar(void);从标准输入 读入一个字符出错返回EOF(-1)停止输入 Windows:Ctrl + ZUnix:Ctrl + D Ctrl + C 是退出运行的程序#include<stdio原创 2017-02-15 09:57:43 · 428 阅读 · 0 评论 -
2.2 指针的计算
1. 1 + 1 = 2?给一个指针 加 1,表示要让指针指向下一个变量 如果指针不是指向一片连续分配的空间,这种运算没有意义#include<stdio.h>int main(void){ // char 数组 char ac[] = {0, 1, 2, 3, 4, 5, 6}; char *p = ac; printf("p=%p\n", p); // p=原创 2017-02-15 09:53:16 · 363 阅读 · 0 评论 -
5.1 自定义可变数组
1.array.h#ifndef _ARRAY_H_#define _ARRAY_H_typedef struct { int *array; int size;} Array;Array array_create(int init_size);void array_free(Array *a);int array_size(const Array *a);int* array_原创 2017-02-23 12:10:25 · 385 阅读 · 0 评论 -
4.3 结构类型——类型定义
1.自定义数据类型 typedeftypedef 用来声明一个已有的数据类型的新名字,比如:typedef int Length; // 使用Length 成为 int 的别名//用Length这个名字 代替 int 出现在定义变量和声明参数Length a,b,len;Length numbers[10];typedef声明新的类型的名字:新的名字是某种类型的别名改善了程序的可读性typ原创 2017-02-23 10:29:27 · 453 阅读 · 0 评论 -
2.1 指针的使用
1.指针的使用1.1 交换两个变量的值#include<stdio.h>void swap(int *pa, int *pb); int main(){ int a = 5; int b = 6; swap(&a, &b); printf("a=%d,b=%d\n", a, b); // a=6,b=5 return 0;}void swap(int *pa,原创 2017-02-14 12:19:04 · 474 阅读 · 0 评论 -
1.4 类型转换和条件运算
1.自动类型转换1.1 计算时:当运算符两边 出现不一致的类型时,会自动转换成 较大的类型,大 指的是 能表达的数的范围更大char –> short –> int –> long –> long longint –> floag –> double1.2 输入输出时:对于 printf,任何小于int的类型 会被转换成 int; float 会被转换成 double但是scanf不会,原创 2017-02-11 22:09:47 · 401 阅读 · 0 评论 -
1.3 逻辑类型
1. bool引入 #include#include<stdio.h>#include<stdbool.h>int main(){ bool b = 6 > 5; bool t = false; printf("%d\n", b); // 1 printf("%d\n", t); // 0 t = 2; printf("%d\n", t); // 1原创 2017-02-11 16:02:32 · 577 阅读 · 0 评论 -
1.2浮点类型
1.浮点类型float: 字长:32,范围:±(1.20*10^-38 ~ 3.40*10^38), 0, ±inf, nan,有效数字:7输入(scanf):%f输出(printf):%f,%edouble: 字长:64,范围:±(2.2*10^-308 ~ 1.79*10^308),0, ±inf, nan,有效数字:7输入(scanf):%lf输出(printf):%f原创 2017-02-11 14:38:22 · 742 阅读 · 0 评论 -
4.2 结构类型——结构
1. 结构#include<stdio.h>int main(int argc, const char *argv){ struct date{ int month; int day; int year; }; struct date today; today.month = 02; today.day = 16;原创 2017-02-16 11:52:33 · 559 阅读 · 0 评论 -
6.2 宏
1.编译预处理指令以#开头的是编译预处理指令它们不是C语言的成分,但是C语言程序离不开它们用#define来定义一个宏#include<stdio.h>//const double PI = 3.1415926;#define PI 3.1415926int main(int argc, const char *argv){ printf("%f\n", 2*PI*3.0);原创 2017-02-28 16:27:30 · 359 阅读 · 0 评论 -
6.1 全局变量
1.全局变量定义在函数外面的变量全部变量有 全局的生存期和作用域 它们与任何函数都无关在任何函数内部都可以使用它们2.全局变量初始化没有做初始化的全局变量会得到0值 指针会得到NULL值只能用编译时刻已知的值来初始化全局变量它们的初始化发生在main函数之前#include<stdio.h>int f(void);int gAll;// int gAll = f(); //[E原创 2017-02-28 16:20:03 · 527 阅读 · 0 评论 -
5.2 链表
1.可变数组的缺陷问题:当长度不够时 申请新的内存是一个简洁的方式,但是 拷贝数据耗时,在内存限制下 可能会拷贝失败(比如内存剩下4字节,原数组4字节,新的数据2字节。如果重新申请一段内存做拷贝就会失败) 解决:我们希望把各数组连接起来,不是拷贝链表中每个元素 需要知道 值 和 下一个元素的地址,我们知道 链表的 头 head,就可以获取链表中的元素2.定义链表node.h#ifndef _NOD原创 2017-02-27 15:19:17 · 269 阅读 · 0 评论