接下来是我在学习C语言的一些笔记,特别说明我用的是gcc编译器(Linux系统下的编译器,功能特别强大),编写程序用的是vim,与之先关的vim基本操作,我已经在我的博客更新过,建议大家去看看(里面包含Ubuntu16.04的一些基本操作),我也是编程小白,但笔记都是参照技术大牛做的,希望能帮到大家!
希望大家在编程的路上越走越好!!!!!!
好啦! 废话不多说,直看知识点吧
-
关键字
a. 标识符:
在程序中,使用的变量名,函数名,标号大呢个统称为标识符。
除库函数名由系统定义外,其他都由用户自定义C 语言规定:
标识符只能是字母(AZ,az),数字(0~9)和下划线组成,
并且第一个字符不能为数字int 0a; //error int a0; //OK
C 语言对标识符的长度没有限制,但是标识符的长度取决与机器和编译系统
大小写是有区别的:比如:A , a
int a; //a,A 是两个不同的变量
int A;
命名应尽量有相应的意义
//以下方式为不规范命名形式
int a, b, c ,d ;
int a1,a2,a3,a4 … a100;变量命名尽量望其名,知其意!!
命名方法:
驼峰命名法:
int addNum1;
int addNum2;
下划线分割:
int add_num_1;
int add_num_2;
-
基本数据类型
a. 整型
短整型:short int(short) — 2 byte %d
整 型:int — 4 byte %d
长整型:long int(long) — 8 byte %ld有符号数:signed
无符号数:unsigned — %u常 量:程序运行过程中,值不可改变的量。
变 量:用于保存数据的计算机内存单元。运行期间,其值可以发生改变
变量名:实际上就是一个内存地址,从变量中取值,通过变量名找到相应的内存地址
从该存储单元中读取数据。变量的定义:
DataType parametersName;
数据类型 变量名称;例如: int a; short b; long num; short int tmp;
变量的初始化:
a. 第一种:先定义,后初始化
int num;
num = 0; //num = 45; 其初始值可以任意,一般默认初始化为 零 值b. 第二种:定义变量的同时初始化 int temp = 23; 变量的初始值如何确定? 当确定变量必须用到,但其值不确定时,一般初始化为零值 确定其初始值,将其初始画为该值即可。 其他情况,视具体使用情况而定。
未初始化的变量,其值都是随机的!
多变量的定义及初始化:
第一种:
int a, b, c, d;int a, b, c, d = 0; //只有 d 的值是确定的,其他值随机 int a = 0, b = 1, c = 2, d = 3; //OK int a, b, c, d; a = b = c = d = 3; //语法上是对的,正确的表达式 其等价于:从右向左赋值 d = 3; c = d; b = c; a = b; 第二种: int a = 1; int b = 2; int c = 3; int d = 4;
思考:
以下数据哪些是合法的?
666
-333
345L //long int a = 345;
333U //unsigned int b = 333;
123u
3.14
3.1415f //float pi = 3.1415;
以上数据均为合法数据 -
字符型数据 — char
字符:由但单引号扩起来的单个符号或数字或字母,称之为字符
如:
‘a’, ‘A’, ‘9’, ‘@’, ’ ', ‘,’字符型变量存储时,存储的是对应的 ASCII 值
字符型数据可以和整型数据进行相互赋值,通过 ASCII 码值进行操作字符型变量的定义:
DataType Name;
占位符:%c,
字节数:1 bytechar ch; char a = '0'; ch = 'a';
putchar()/getchar()
getchar():只能接收单个字符,输入数字也按字符处理
当输入多个字符时,只取第一个字符:
char ch = ‘0’;
ch = getchar();putchar():输出单个字符
putchar(ch);
putchar(‘G’);转义字符:
‘ ’:换行符,下一行行首
‘ ’:制表符(tab)
‘’:回退
‘ ’:回车,回到当前行行首练习:
使用 getchar() 获取单个字符
使用 putchar() 输出: China 并换行!!#include<stdio.h> int main() { putchar('C'); putchar('h'); putchar('i'); puthcar('n'); puthcar('a'); ptuchar(' '); return 0; }
-
输出/输入
输出:printf()
a. 格式化输出:printf()
printf("格式化字符串");
printf("Hello, World! ");
b. 参数
printf(“格式化列表”,参数列表)printf("%d -- %d -- %d ", a, b, c);
输入:scanf();
scanf(“格式化列表”, 参数列表);使用:
scanf("%d", &a);scanf(“a = %d”, &a);
scanf("%d %d", &a, &b);
&:区地址符号
&a:表示 a 变量的地址
%d:占位符,不同类型变量,占位符不同该种写法,输入数据时,两数之间可用空格,tab键或回车隔开,
scanf() 获取数据后,会产生游离回车符,因此scanf后紧跟一个
getchar() 用于吸收游离回车符,防止对后续输入 char 类型数据时造成影响!!!scanf() 的格式化列表中,不能使用 , 否则会造成缓冲区问题,数据无法正确获取!!
-
浮点型数据
单精度:float 精确度 6 位左右 4 byte %f
双精度:double 精确度 15 位左右 8 byte %lf科学计数法:
men:
mEn:
m:可以是整数,也可以时小数,也可以负数,也可以是正数
n:只能是整数3.14E2 = 3.14 * 10^2
2.34e-3 = 2.34 * 10^-3其他占位符:
%g:省略末尾不必要的 0
%e: -
占位符问题:
数据类型 printf scanf()
short/int %d %d
long %ld %ld
char %c %c
float %f %f
double %f/%lf %lf其他占位符号:
%g:省略浮点型数据末尾不必要的 0
%e:指数形式显示浮点型数据
%u:无符号数的占位符
%o:八进制数
%x/%X:十六进制数
%p: 地址如何区分:八进制数, 十进制数,十六进制数???
八进制:以 0 开头的数据,(0~7)
十六进制:以 0x 或 0X 开头的数据(09,af(A~F))0123
0567
0129 //Error
123
0x123
0xfff
0xefg //Error
456
345f
4.23f
2345L