前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别。所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西。然而数据结构那些本来是在看python下的,但是python实在包装了太多的东西而大多的经典教材都是基于C语言的(自然是这样,C语言能够操作直接访问物理地址,能够进行位(bit)操作的特点就决定了。)所以就决定重新学一遍C语言,先重...
一、基本内容:C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。要点:1、C语言函数可以递归调用。2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。二、递归条件采用递归方法来解决问题,必须符合以下三个条件:1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。说明:解决问题的方法相同,调用函...
1.数据类型(1)常量与变量(2)c语言一共有32个关键字(3)变量定义:数据类型 变量名(标识符) 变量赋值:变量名=值(4)标识符命令规则: 1)不能是关键字 2)标识符只能由字母、数字、下划线组成 3)见名知义 4)第一个字符必须为字母或下划线 5)不能和同一函数内的其他标识符重复 6)标识符命名大小写(5)常量定义: 1)const 数据类型 常量名 2)#define【宏定义】 常量名 数值①注意;通过#d...
在介绍过顺序结构和选择结构以后,我们能通过c语言做的事依旧很少,比如换硬币问题。将一元的人民币换成一分,两分,五分的硬币共50枚。如何解决这样的问题呢?我们可以把它化解成一个求解线性方程组的问题。 可以设需要一分的硬币x枚,两分的硬币y枚,五分的硬币z枚。于是,我们可以得到一个方程组,像这样:x+y+z = 50,0.01x+0.02y+0.05z = 1。我们知道,计算机在计算浮点数的时候可能会出现精度问题。所以,我们 把方程...
交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置。冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们,直到序列比较完。我们称它为一趟冒泡,结果将最小的元素交换到待排序序列的第一个位置。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少一个元素,每趟冒泡的结果把序列中最小元素放到了序列的最终位置,……,这样最多...
黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------二 二维数组01 二维数组的定义:类型标识符 数组名[常量表达式][常量表达式]; 如:int a[3][4]; 表示定义了一个3行4列的整型二维数组a,含有12个数组元素.02 二维数组的引用:数组名[下标][下标]数组的下标从零开始,引用时不能超过数组定义的范围.03 二维数组的初始化l 按行给二维数组赋初值l ...
前面创建了一张表,现在给他插入一些数据,插入数据跟创建表差不多,仅仅是SQL语言不一样而已,完整代码如下:#include <stdio.h>
#include <stdlib.h>
#include "sqlite/sqlite3.h"#define DB_NANE "sqlite/test.db"sqlite3 *db = NULL;
char* sql = NULL;
char *zErrMsg = NULL;
int ret = 0;typedef enum{false,true
} bool;/*
typedef int (*sqlite3_callback)(
void*, Data provided in the 4th argument of sqlite3_exec(...
结构体结构体是一种自定义的数据类型struct 结构体名{ 类型说明符 成员名; … 类型说明符 成员名;};#import <Foundation/Foundation.h>int main(int argc, constchar * argv[])
{struct teacher{char name[30];char sex;int age;char course[30];};typedef struct teacher Teacher;Teacher cui={"cui",‘m‘,18,"language c"};struct cup{float price;//价格int capacity;//容量char corlor[20...
1 #include <stdio.h>
23void main()
4{
5 printf("Hello World!\n");
6 }几乎学习任何语言接触到的第一个语言都是Hello World!先是头文件.(stdio.h是standard input and output的缩写)然后是主函数,主函数名称一定是main.主函数内部调用printf()函数输出字符串:Hello World!原文:http://www.cnblogs.com/FrogIf/p/5934927.html
实例28:从键盘读入实数题目要求: 编制一个从键盘读入实数的函数readreal(double *rp)。函数将读入的实数字符列转换成实数后,利用指针参数rp,将实数存于指针所指向的变量*rp。 思路: 其实一开始我是懵逼的(╯︵╰),输入实数的话用scanf不就可以了吗?为啥还要转换呢?在经过一些思考后,发现要理解这道题需要了解以下一些知识点: 1.标准输入\输出流 2.getchar()等相关函数的使用知识点...
数据类型包括(基本类型,构造类型,指针类型,空指针)。其中基本类型有:整型(包括短整型short;基本整型int;长整型long)字符型char实型(也叫浮点型)(包括单精度型float,双精度型double)枚举类型(enum)构造类型有:数组类型结构体类型(struct)共用体类型(union)内存:计算机在执行程序的时候,组成程序的指令和程序所操作的数据都必须存储在某个地方,这个地方就是计算机的内存,也称为 RAM 。了解二进制数每8位二进制...
一、数据的输入与输出 1.stdio.h中包含的函数: getchar(输入字符) gets(输入字符串) printf(格式输出) putchar(输出字符) puts(输出字符串) scanf(格式输入) flushall(刷新缓冲区) 等等 2.flushall(); 作用举例: scanf("%c", &a); //flushall(); 作用:删除缓冲区中的"\n",防止其被继续输入 scanf("%c", &b); 3.格式字符八进...
1. 基本数据类型由11个关键字组成: int , long , short, unsigned, char, float, double, signed, _Bool, _Complex(复数) 和 _Imaginary()虚数2. 有符号整型: a. int 至少占16位 b. short 或 short int 至少占16位,长度不能大于int c. long 或 long int 至少占32位, 长度不能小于int d. long long 或 long long int 至少占64位,场地不能小于long3. 无符号整型: 在整型类型前面加上 unsigned 表明该类型是无...
C语言学习笔记_结构体的内存对齐
结构体的指针访问和下标访问
结构体可以在定义的同时申明变量:
// 定义的同时申明变量s1;
struct student {int a;double b;char c;
}s1 ;
// 申明s2;
struct student s2;结构体的下标访问:
s1.a = 1;
s1.b = 2.2;
s1.c = 'x';printf("s1.a = %d.\n", s1.a);
printf("s1.a = %f.\n", s1.b;
printf("s1.a = %c.\n", s1.c);结构体的指针访问:
// 第一个变量在开始,所以直接转换结构体的地址为int ...
首先,我们需要明确的是,由.c文件生成可执行文件的过程中都会经历哪些过程。
.c文件 --> .i文件 --> .s文件 --> .o文件 -->可执行文件
对应的操作依次为:预处理、编译、汇编、链接。
如gcc -o xx.i xx.c -E为仅执行预处理的命令,预处理实际上是展开头文件和宏替换的过程。
宏定义
例:#define pi 3.14
如上文所述,发生在预处理阶段的宏替换是单纯的字符串的替换(并没有整型、浮点型等的概念)。
此外,还可以定义宏函数。例如...