【C语言】1.初始C语言

1.C语言是一门计算机语言(人和计算机交流的语言),C、C++、JAVA、Python等都是计算机语言。
2.语言的发展,最初是二进制语言,即0和1,因为计算机硬件的基础是电,而电平只有正电和负电只分,即0和1,这时会编程的人是科学家。
3.譬如用10100001表示ADD,像ADD这样的符号叫做助记符,用助记符表达的语言叫做汇编语言,再往后发展就是B语言,C语言,C++等。就好像照相机一样,最初人们要去照相馆找专门的照相师傅才能照相,随着社会的发展,有了数码相机,手机,人人都会照相,门槛越来越低了,使用的人也越来越多了。
4.C语言早起不是很成熟,逐渐变得成熟,流行。由于各家都在C语言上做优化,导致各个机构的C语言不统一,于是有了一个国际标准C89/C90,甚至后面的C99,C11,但是由于C99和C11并没有流行起来,导致很多编译器都不支持C99和C11。这样的统一导致C语言在很多编译器上都可以进行编译,也便于交流和流行。
5.写C代码,良好的习惯是创建工程。一般会有.c文件(源文件)和.h文件(头文件)
6.第一个C文件

#include .h>//stdio.h是C语言本身提供给我们的库函数,想要调用库函数需要用#include 这样的方式 //stdio的意思是,std-标准standard input output int main() //主函数-程序的入口-有且只有一个 //main前面的int表示main函数调用返回一个整数值 //以前的教材也有void maiin()这样的写法,但这样的写法已经过时了,不要再用了 { printf("hello world\n"); //在屏幕上输出hello world并换行 //\n是换行的意思 return 0; //返回0 }

7.数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long //更长的整型
float //单精度浮点数
double //双精度浮点数
//%c 打印字符格式的数据 //%d 打印整型十进制的数据 //%f 打印浮点型的数据,小数 //%p 以地址的形式打印 //%x 打印16进制的数字 //%x 打印8进制的数字 #include .h> int main() { char ch ='A' ; // 向内存申请一块空间来存放字符A,而ch是一种字符类型,同时也是这块空间的名字 printf("%c\n",ch); //%c 打印字符格式的数据 return 0; //返回0 }

分析每种数据类型所占空间内存的大小
#include .h> int main() { printf("char所占的内存大小为 %d\n",sizeof(char)); //1个字节,8个位 printf("short所占的内存大小为%d\n",sizeof(short)); //2个字节,16个位 printf("int所占的内存大小为%d\n",sizeof(int)); //4个字节,32个位 printf("long所占的内存大小为%d\n",sizeof(long)); //4个字节或者8个字节 printf("long long所占的内存大小为%d\n",sizeof(long long)); //8个字节,64个位 printf("float所占的内存大小为%d\n",sizeof(float)); //4个字节,32个位 printf("double所占的内存大小为%d\n",sizeof(double)); //8个字节,64个位 return 0; //返回0 }

为什么long可能是4个字节,也可能是8个字节。因为C语言标准规定只需要sizeof(long)>=sizeof(int)即可,而int占4个字节,所以long占4或者8个字节都符合标准,所以在不同的编译器下可能出现不一样的结果,但都是满足标准的。
【【C语言】1.初始C语言】从上面就可以知道
short 所能表示的数字大小为0—22^16-1,即0—65535;
int所能表示的数字大小为0—2
2^32-1,即0—65535;
全局变量和局部变量
#include .h> int num1=10; //全局变量 int main() { int num2=20; //局部变量 return 0; }

上面代码里面的变量num1属于全局变量,定义在代码块{}之外的变量;而num2属于局部变量,定义在代码块{}之内的变量。
局部变量和全局变量的名字建议不要相同,容易误会,产生bug,当局部变量和全局变量的名字相同的时候,局部变量优先。
#include .h> int a=10; //全局变量 int main() { int a=20; //局部变量 printf("%d\n",a); return 0; } //输出为20,说明局部变量优先级更高

变量的使用,输入以及输出
#include .h> int main() { #include .h> int main() { //C语言语法规定,变量要定义在当前代码的最前面 //计算两个数的和 int num1=0; int num2=0; int sum=0; //输入函数 scanf("%d%d",&num1,&num2); //取地址符号& sum=num1+num2; printf("sum=%d\n",sum); return 0; } }

变量的作用域以及生命周期
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程
【C语言】1.初始C语言
文章图片
正确
【C语言】1.初始C语言
文章图片
错误
【C语言】1.初始C语言
文章图片
extern关键字,用来申明外部符号,可以在一个源文件里面调用另外一个源文件里面的变量。
//sum.c int num=100 //main.c int main() { extern intnum; printf("num=%d\n",num); //打印num=100 return 0; }

生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期
【C语言】1.初始C语言
文章图片
图一
【C语言】1.初始C语言
文章图片
图二
常量:
1.字面常量
2.const修饰的常变量,该变量的值无法改变
【C语言】1.初始C语言
文章图片
图一
【C语言】1.初始C语言
文章图片
图二
3.#define定义的标识符常量
【C语言】1.初始C语言
文章图片
4.枚举常量
枚举关键字:enum
#include .h> enum Sex { MALE, FEMALE, SECRET }; //MALE,FEMALE,SECRET-枚举常量 int main() { printf("%d\n",MALE); //0 printf("%d\n",FEMALE); //1 printf("%d\n",SECRET); //2 return 0; }

5.字符串+转义字符+注释
由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注意:字符串的结束标志是一个'\0'的转义字符,在计算字符串长度的时候'\0'是结束标志,不算作字符串的内容。
"abcdefg"; "hello bit"; ""; //空字符串

问题:如果想要把字符串"abc"存起来,应该放在哪里呢。
字符串后面默认带有'\0',这是字符串的结束标志。
#include .h> int main() { char a1[]={"abc"}; //数组 //"abc"---'a''b''c''\0'--'\0'字符串的结束标志 char a2[]={'a','b','c','\0'}; printf("%s\n",a1); printf("%s\n",a2); return 0; }

#include .h> #include int main() { char a1[]={"abc"}; //数组 //"abc"---'a''b''c''\0'--'\0'字符串的结束标志 char a2[]={'a','b','c','\0'}; char a3[]={'a','b','c'}; printf("%d\n",strlen(a1)); //strlen--计算字符串长度的 printf("%d\n",strlen(a2)); printf("%d\n",strlen(a3)); return 0; }

转义字符'\n'的演示
#include .h> int main() { printf("abcn"); //打印出来是abcn printf("abc\n"); //打印出来是abc+换行 return 0; }

常用的字符串
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\’ 用于表示字符常量’
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\ddd ddd表示 1~3个八进制的数字。如:\130 X
\xdd dd表示2个十进制的数字。如:\x30 0
#include .h> #include .h> int main() { printf("%d\n",strlen("c:\test\32\test.c")); //计算后面字符串的长度 return 0; } //答案:13 //答案解析,\t 是一个字符;\32也是一个字符,表示的是作为8进制代表的那个10进制数字,作为ASCII码值,对应的字符。即将8进制的32转换为10进制为3*8+2=26。通过查表可知ASCII表中26表示的是→ //"c:\test\32\test.c"变成了 //c //: //\t---横向制表 //e //s //t //\32---查ASCII表,可知打印出来是→ //\t //e //s //t //. //c //所以字符串长度一共是13

    推荐阅读