c语言笔记

gcc bool.c -wall 可以将编译信息显示出来

%d(十进制) %x(十六进制),%o(八进制0),%e(科学计数法) ,%s(打印字符串)

gcc -E define.c -o define.i生成预处理后的文件

:vsp双频道

%#x #代表自动增加0x前缀

条件运算符“?:”

<表达式1>?<表达式2>:<表达式3>(if表1输出表2else输出表3)

Eq x>=y?x+18:y-100

逗号运算符

Eq z = (x+=5,y=x+0.2)

Sizeof运算符(看数据类型占的字符数)

C运算符是有优先级的

I/O操作由函数实现 #include

枚举类型:eg    enum  weekday{sun,mon,tue}  a;

循环:goto,while,do—while,for

pow计算n次方和 (man pow可以看其中的参数)

Pus(“”)打印字符

scanf("%d", &n) 读入一个整数
!= 0 读入的整数 n 有效

gcc bool.c -wall -lm 有函数输入时,为了使得编译器可以识别,编译的时候要加上。

c语言对数组不作越界检查,使用时要注意

数组定义长度的时候可以用变量

二位数组声明事列数不能省略,行数可以省略。

二维数组按照行序走,原因:内存是一维的

(个人认为数组和for循环很配)

字符数组是元素的数据类型为字符类型的数组。

C语言中无字符串变量

\xhh表示十六进制数代表的符号

\ddd表示八进制的

EOF全称是End Of File(C语言标准函数库中表示文件结束符),通常在文本的最后表示资料结束。C语言中数据都是以字符的ASCII代码值来存放的。ASCII代码值得范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志,我们可以把EOF作为‘-1’理解

Isalpha() 检查是否为字母字符

Isupper() 检查是否为大写字母字符

Islower() 检查是否为小写字母字符

Isdigit() 检查是否为数字

C程序设计中使用指针可以:

使程序简洁、紧凑、高效

有效地表示复杂的数据结构

动态分配内存

得到多于一个的函数返回值

在计算机内存中,每一个字节单元,都有一个编号,称为地址

在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为指针变量

Int *p = &a(int *p; p=a;)定义中的*p是个类型,而实际应用的时候*p表示的就是地址中的内容

指针指向的内存区域中的数据称为指针的目标

指针指向的区域是程序中的一个变量的内存空间,则这个变量称为指针的目标变量

指针运算的种类是有限的,它只能进行赋值运算算术运算关系运算

指针和零进行等于或不等于的关系运算,判断指针是否为空。

指针变量可以指到数组后的内存单元

数组的指针是指数组在内存中的其实地址 eq double x[8]其中,x是x数组的起始地址

X[i]、*(px+i)、*(x+i)和px[i]具有完全相同的功能:访问数组第i+1个数组元素

虚拟机打开终端快捷键:首先在桌面任意空白处,按CTRL+ALT+T

一级指针可以打开二维数组。

二维数组名代表数组的起始地址,数组名+1,是移动一行元素。因此,二维数组名常被称为行地址。例如a[i]

行指针(数组指针)int a[2][3],int *p[3]

字符指针:初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。(局部变量)

在c编程中,当一个字符指针指向一个字符串常量时,不能修改指针指向的对象的值(静态变量)

Segmentation fault 一般是和内存有关的问题

指针数组:由若干个具有相同存储类型和数据类型的指针变量构成的集合。顾名思义搞数组的时候用的多。

指针数组名相当于二级指针

把一个指向指针变量的指针变量,称为多级指针变量

Void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量

(常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值)

函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。

<数据类型>是整个函数的返回值类型。

函数的参数传递

复制传递方式        地址传递方式

指针函数是指一个函数的返回值为地址量的函数

递归函数是指一个函数的函数体中直接或间接调用了该函数自身

函数指针是用来存放函数的地址,这个地址是一个函数的入口地址

你可能感兴趣的:(c语言)