一.变量为什么必须初始化? 在回答这个问题之前,我们先来运行一段代码: #include <stdio.h> int main(){ int i; printf("i=%d\n", i); } 输出结果:3401184 当软件运行完成后,操作系统回收内存空间,但是并不清空该内存空间里遗留的值.因为有这些垃圾数据,所以通常必须在定义变量时进行初始化,覆盖垃圾数据. 二.常量在C语言中是怎么表示的? 1.整数:十六进制 0x 十进制 八进制 0  (注意是数字0) 2.浮点数:…
一.指针是C语言的灵魂 # include <stdio.h> int main(){ int *p; //p是变量名,int *表示p变量存放的是int类型变量的地址,p是一个指针变量 int i = 3; //p = i; 这样写是错误的 //p = 4; 这样写是错误的 p = &i; //将i变量的地址给p变量 //p保存了i的地址,因此p指向i,修改p的值不影响i的值,修改i的值也不影响p的值 return 0; } # include <stdio.h> int…
一.基本的输入和输出函数的用法 1.printf()  //屏幕输出 用法: (1)printf("字符串\n"); (2)printf("输出控制符", 输出参数); (3)printf("输出控制符1 输出控制符2...\n", 输出参数1,输出参数2,...); //注意:后面的输出参数中间必须加 "," (4)printf("输出控制符 非输出控制符", 输出参数); 输出控制符包含:%d %ld%…
一.GCC基本介绍 GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器.它是一套以GPL及LGPL许可证所发布的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果计算机Mac OS X 操作系统的标准编译器.GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准.GCC原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言.GCC很快地扩展,变得可处理C++.之后也变得可处理For…
我们至少可以通过两种结构来存储数据 数组 1.需要一整块连续的存储空间,内存中可能没有 2.插入元素,删除元素效率极低. 3.查找数据快 链表 1.查找效率低 2.不需要一块连续的内存空间 3.插入删除元素效率高 计算机术语 头指针:存放头结点地址的指针变量 头结点: 数据类型和首节点的数据类型一模一样 头结点是首节点前面的那个节点 头结点并不存放有效数据 设置头结点的目的是为了方便对链表操作 首节点:存放第一个有效数据的节点 尾节点: 存放最后一个有效数据的节点 尾节点的指针域是空的(null…
一.枚举 # include <stdio.h> enum WeekDay //定义了一个数据类型(值只能写以下值) { MonDay, TuesDay, WednesDay, ThursDay, FirDay, SaturDay, SunDay }; int main(void){ enum WeekDay day = WednesDay; printf("%d\n", day); return 0; } 输出结果:2把一个事物所有可能一一列举出来优点:代码更安全缺点:书…
一.为什么需要结构体? 为了表示一些复杂的事物,而普通类型无法满足实际需求 二.什么叫结构体? 把一些基本类型组合在一起形成的一个新的复合数据类型叫做结构体. 三.如何定义一个结构体? 第一种方式: struct Student{ int age; float score; char sex; }; 第二种方式: struct Student2{ int age; float score; char sex; } str2; 第三种方式: strut { int age; float score…
一.传统数组的缺点: 1.数组的长度必须事先定制,且只能是常整数,不能是变量 int len = 5; int a[len]; //error 2.传统形式定义的数组,该程序的内存程序员无法手动释放 # include <stdio.h> void f(void){ int a[5] = {1, 2, 3, 4, 5}; //这二十个字节的存储空间程序员无法手动编程释放它 //只能在本函数运行完毕时由系统自动释放 } int main(void){ return 0; } 3.数组的长度不能在…
一.for和while等价替换 int i = 1; for (i; i<=100; i++){ sum = sum + 1; } int i = 1; while(i<=100){ sum = sum + 1; i++; } 二.从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no 回文数:正着写倒着写一样的数 # include<stdio.h> int main(){ int val, m, sum=0; printf("请输入您需要判断的数字:&qu…
1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确定的 (3)但是程序运行的过程中,可能需要使用一些额外的内存空间 2. malloc 和 free 函数 (1)malloc 和 free 用于执行动态内存分配的释放 (2)malloc 所分配的是一块连续的内存 (3)malloc 以字节为单位,并且返回值不带任何的类型信息:void* mallo…