头文件的书写

头文件实现函数声明,在使用模板后可以实现一个C文件中即使重复包含某个头文件,在系统中用于只会确认为一个包含

头文件包含可以理解为将头文件内容替换#include“...”行

模板(dong.h):

#ifndef _DONG_H_
#define _DONG_H_ //其它内容 #endif

编译工具的使用

C语言(gcc)、C++语言(g++)

编译默认输出a.out文件

gcc *
gcc *.c

重命名输出文件

gcc test.c -o newexe

命令行传递参数

#include<stdio.h>
int main(int vsize,char *vch[])
{
int i=;
for(i=;i<vsize;i++)
printf("%d=>%s\n",i,vch[i]);
return ;
}

输入和输出

scanf()输入

返回值1为失败,2为正确

int a, b;
printf("请输入两个整数,用空格隔开:");
// scanf("%d,%d", &a, &b);//逗号分隔
// scanf("%d-%d", &a, &b);//减号分隔
int i=scanf("%d%d", &a, &b);
printf("%d,%d,%d", a, b,i); printf("请输入两个整数,用逗号分隔:");
scanf("%d,%d", &a, &b);
printf("%d,%d", a, b);

printf()输出

printf("dongxiaodong %d \n", 100);//格式化输出

printf("东小东\n");//直接输出内容

相关输出百分号意义:

%d          正常输出整数,仅占有本身大小位置

%5d        整数位数不足5(起始为1),前面自动补空,超出则与%d相同

%-5d       整数位数不足5,后面补空,超出则与%d相同

%f,%F  浮点型(float)输出,默认6位小数位,超出则四舍五入

%lf          双精度浮点型(double)

%15f       浮点数总长最小为15,不足则前面补空

%-15f      浮点数总长最小为15,不足则后面补空

%3.2f      前面数组3与上两个解释一样,小数点后的2表示小数位最大为2位,多则四舍五入,少则补零

%c          单个字符

%s          字符串

%p          指针地址(十六进制)

%x,%X    输出不带前缀的十六进制整数,小写x对应小写a、b、c……

%%         输出符号:%

输入输出单个字符

getchar();接收第一个字符,等待用户按下enter键后开始读取

getche();接收第一个字符,用户输入后马上读取,输入显示,头文件【#include<conio.h>】

getch();接收第一个字符,用户输入后马上读取,输入不显示,头文件【#include<conio.h>】

putchar();输出一个字符

#include<stdio.h>
void main() {
char ch = getchar();//拿到输入的第一个字符
printf("%c\n", ch);
putchar(ch);//输出之前输入的字符
putchar('\n');//输出换行符
}

getc()和putc()

原型:

int putc(int char, FILE *stream)

int getc(FILE *stream)

省略步骤:FILE *pfin = stdin;

#include<stdio.h>
void main(){
char str[];
fgets(str,,stdin);//stdin标准输入,键盘
fputs(str,stdout);//stdout标准输出,屏幕
}

输入输出字符串

Gets()与puts()是不安全的操作,取代方法为fgets()与fputs()

#include<stdio.h>
void main(){
char str[];
fgets(str,,stdin);//stdin标准输入,键盘
fputs(str,stdout);//stdout标准输出,屏幕
}

C语言的注释

#include <stdio.h>

#define DevFlg 20
void main(){
#if(DevFlg==1)
printf("----1--------");
#elif(DevFlg==2)
printf("----2--------");
#elif(DevFlg==3)
printf("----3--------");
#else
printf("-------------");
#endif
}

调用命令行

输出默认直接到屏幕,需要获取内容可以将其重定向到文件中,然后再取文件(> 、>>)

system("cp -rp dongdir dongdir111");

‘1’、1、0x01的不同:

‘1’为字符,其对应的十进制为49,对应的十六进制为0x31

1为整型,对应的十进制为1,对应的十六进制为0x01

十进制是逢十进一,十六进制是逢十六进一,如下表,可见0~9中,十进制和十六进制数是完全相同的,可直接用“==”。

int

0x

0

0(0x00)

1

1 (0x01)

2

2(0x02)

......

......

8

8(0x08)

9

9(0x09)

10

A(0x0A)

11

B(0x0B)

15

F(0x0F)

字符(ASCII)与进制之间的转换

字符到进制

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main() {
char aa = (int)'b';//将ASCII转换为整数
char bufx[];
itoa(aa, bufx, );//进制转换,2 8 10 16
int lend = strlen(bufx);
bufx[lend] = ;//截断数组
//输出:2----62
printf("%d----%s\n", lend,bufx);//输出进制转换后的值
}

十六进制到字符串

#include<stdio.h>
#include<stdlib.h>
void main() {
char chx[] = { 0x82,0x07,0x00,0x01,0x00,0x02,0x6e,0x62,0x00};
char j = ;
const int lenx = sizeof(chx);
char strxto[lenx];
for (j = ; j <lenx; j++)
{
printf("%c", chx[j]);
strxto[j] = (char)chx[j];
}
printf("len:%d--data:%s--\r\n", lenx,strxto+);
}

条件/循环语句:

switch…case…break

条件可以是数字(如十进制、十六进制等),可以是字符(如‘a’等)

goto

使用时语句标号和goto必须在同一个函数内,语句标号和goto的前后位置无规定

for(初值,条件,初值变化){ 循环体;}

执行循序:初值->条件->循环体->初值变化->条件->循环体…

#include<stdio.h>
void main(){
int i;
for(i=0;i<3;++i){
printf("i1:%d\r\n",i); //0 1 2
}
for(i=0;i<3;i++){
printf("i2:%d\r\n",i); //0 1 2
}
}

程序的四大区

代码区(Code):

指用来存放程序中执行代码的一块内存区域。区域大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

数据区(data):

全局变量、字符串、静态变量

指用来存放程序中已初始化的全局变量的一块内存区域。属于静态内存分配。

堆(heap):

堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。

//声明空间
//返回值void指针
//参数表示大小
//如果内存申请失败(内存空间不足),则返回NULL
void *malloc(unsigned int size); //释放空间
void free(void *p);

栈(stack):

是用户存放程序临时创建的局部变量的一块内存区域。也就是函数括号{}中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,函数在被调用的时候,其参数也会被压入发起调用的进程栈中,并且调用结束后,函数返回值也会被放入栈中。由于栈的先进后出的特点,栈特别方便用来保存/恢复调用现场。从这个意义上讲,可以把栈看成一个寄存、交换临时数据的内存区。

例子

int a = ;//数据区
char *p1;//数据区
int main()
{
int b; //栈区
char s[] = "abc";//栈区
char *p2;//栈区
char *p3 = "";//p3在栈区,123456/0在文字常量区(数据区)
static int c = ;//静态初始化区(数据区)
p1 = (char *)malloc();
p2 = (char *)malloc();//分配得来的10和20字节得区域就在堆区。
}

C语言小笔记的更多相关文章

  1. C语言小笔记(1)

    枚举类型的大小是4,和一个int整形大小一样 就是最后一个逗号后面的表达式的值,比如: int a=1,b; b=(a+1,a+2,a+3); 那么b的值就是a+3,也就是4 函数名   :print ...

  2. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  3. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  4. 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项

    博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...

  5. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  6. JavaScript语言精粹笔记

    JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...

  7. 狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(2)

    前文链接:狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(1) 小甲鱼在很多情况下是跟着谭浩强鹦鹉学舌,所以谭浩强书中的很多错误他又重复了一次.这样,加上他自己的错误,错谬之处难以胜数. 由于拙 ...

  8. 通过反汇编C语言小程序学习Liunx汇编语言

    大家好!    我是来自山东师范大学的吴乐.    今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...

  9. c语言的笔记

    下面把我这半年来记的一些C语言的笔记贴出来. 1  C语言中函数参数传递是按照“值传递”进行的,即单向传递. 2  函数原型:函数类型 函数名(参数类型,参数类型……),可以不必加参数名,因为操作系统 ...

随机推荐

  1. tomcat修改banner,隐藏版本号

    为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装 Tomcat 的版本信息.针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 cata ...

  2. 进程&线程(转)

    (摘自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html) 在传统的操作系统中,进程拥有独立的内存地址空 ...

  3. 你电梯没了—OO第二单元作业思考

    写在前面 这三次电梯调度作业,主要是学习多线程并行操作,对于各个线程的时间轴的把握,互相的配合与影响,通过使用锁来解决访问冲突等方面. 个人在学会Thread相关操作之外,写出来一些奇怪结构的诡异操作 ...

  4. UML中的六种关系

    设计模式是一种对于面向对象语言(C#,C++,Java)的高级应用.其思维体现出的是真正的代码设计.每一种模式都堪称巧妙!但基于各种设计模式,这里少不了基本的类图设计,本文简要列出6种关系,及相关的例 ...

  5. PHP常用180函数总结【初学者必看】

    数学函数 1.abs(): 求绝对值 <span style="font-size: 14px;">$abs = abs(-4.2); //4.2<br>& ...

  6. html中script标签的使用方法

    向HTML页面中插入JavaScript的主要方法,就是使用<script>元素.这个元素由Netscape创造并在Netscape Navigator2中首先实现.后来,这个元素被加入到 ...

  7. 根据缺少的so,安装相关的软件

    http://blog.csdn.net/dianyueneo/article/details/8161350. ubuntu缺少libGL.so sudo apt-get install apt-f ...

  8. python -----一个简单的小程序(监控电脑内存,cpu,硬盘)

    一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时  ,  C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模 ...

  9. 2019.03.26 bzoj4447: [Scoi2015]小凸解密码(线段树)

    传送门 题意简述:咕咕咕 思路:考虑预处理出bbb数组,然后每次改动aaa都只会对第iii和i+1i+1i+1这两个位置产生影响,于是可以用线段树来维护bbb数组. 现在求答案的方法是断环为链,倍增整 ...

  10. [swarthmore cs75] Compiler 4 – Diamondback

    课程回顾 Swarthmore学院16年开的编译系统课,总共10次大作业.本随笔记录了相关的课堂笔记以及第6次大作业. 函数声明 增加函数声明.函数调用的抽象语法:在转换成anf之前还要检查函数声明和 ...