初始C语言

C语言概述:

  1. 计算机编程语言,应用于底层开发。
  2. 简易的方式编译,处理地基存储器,产生少量的机器码,不需要任何运行环境支持便能运行的编程语言。
  3. 良好的跨平台性。
  4. 是一门面向过程的编程语言。

数据类型

char	//字符数据类型	1字节
short	//短整型				2字节
int		//整型					4字节
long		//长整型				4字节
long long	//更长的整型	8个字节
float		//单精度浮点数	4字节
double	//双精度浮点数	8字节

``注:`存在这么多类型为了更加丰富的表达生活中的值。

变量,常量

常量:不可变的值。
变量:变化的值

变量的分类

  1. 全局变量
  2. 局部变量

注:当全局变量和局部变量同名的时候,局部变量优先使用。

变量的作用域和生命周期

  1. 作用域:限定的可用性的代码范围。
    (1) 局部变量的作用域是变量所在的局部范围。
    (2) 全局变量的作用域是整个工程。
  2. 生命周期: 变量的生命周期是指变量的创建到变量的销毁的一个时间段
    (1) 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
    (2) 全局变量的生命周期是:整个程序的生命周期。

变量的定义

定义变量:分两步:
1:开辟空间

int a;//内存空间就开辟好了

2: 写入对应的数据

a=100;

初始化:空间开辟好,里面的数据与生俱来是某个值

int  a = 100; //初始化

赋值:第二次进行主动赋值

a = 200;     //赋值

常量

1.字面常量
2.const 修饰的常变量

const修饰的变量定义被修饰的变量不能直接修改

3.define 定义的标识符常量

宏定义:见名知义

#define MAX 100
4.枚举常量
enum Sex{
	MALE,
	FEMALE,
	SECRET
};

字符串+转义字符+注释

字符串

  1. 由双引号引起来的一串字符称为字符串字面值,或简称字符串。


2. 字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串的内容。
3. 字符串本身默认以’\0’结尾。
4. strlen():字符串的长度不包含反斜杠’\0’。
5. sizeof():字符串的大小包含反斜杠’\0’。
6. "\c"打印就只是c字符,sizeof求大小就是2。

转义字符

初始C语言_第1张图片

注释

  1. 代码中不需要的代码可以直接删除,也可以注释掉。
  2. 代码中有些代码比较难懂,可以加一个注释文字。
    注: ctrl+k+c批量化注释 ctrl+k+u批量化取消

选择语句

  • if…else…
  • switch语句

循环语句

  • while语句
  • for语句
  • do…while语句

操作符

算数运算符

+	-	*	%

移位操作符

>>	<<

位操作符

&	^	|

赋值操作符

=	+=	-=	*=	/=	&=	^=	>>=	<<=

单目操作符

!					逻辑反操作
-					负值
+					正值
&					取地址
sizeof			操作符的类型长度(以字节为单位)
~					对一个数的二进制按位取反
--					前置,后置--
++				前置,后置++
*					间接访问操作符(解引用操作)
(类型)			强制类型转换

关系操作符

>					
>=
<
<=
!=					用于测试不相等
==					用于测试相等

逻辑操作符

&&					逻辑与
||						逻辑或

条件操作符

exp1 ? exp2 : exp3

下标引用,函数调用和结构成员

[]	()	.	->

常见关键字

在这里插入图片描述

关键字typedef

typedef是类型定义,即类型重命名。

关键字static

static是用来修饰变量和函数的
  1. 修饰局部变量-静态局部变量:
    static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期结束。
//代码1
#include	
void test()
{
	int i=0;//每次调用函数都初始化
	i++;
	printf("%d",i);
}

初始C语言_第2张图片

//代码2
#include
void test(){
	//static修饰局部变量 
	static int i = 0;//只初始化一次,之后调用函数跳过此句
	i++;
	printf("%d ", i);
}
int main(){
	int i = 0;
	for (i = 0; i < 10; i++){
		test();
	}
	return 0;
}

初始C语言_第3张图片
static修饰局部变量的时候有两个作用:

  1. 作用域:在代码块有效,使用static有效作用域不改变

  2. 生命周期:临时性。static修饰的变量的生命周期是全局属性。

  3. int i=0;//初始化,局部范围作用完释放,再次作用继续执行改代码进行初始化。

  4. static int i=0;//初始化。任何一个变量都只会作用一次。第二次不会再执行此代码直接跳过。

  5. 修饰全局变量-静态全局变量:
    一个局部变量呗static修饰,使得这个全局变量只能在本源文件内使用,不能再其他源文件内使用。

    //代码1 运行正常
    //add.c
    int g_val=2018;
    //test.c
    #include
    extern int g_val;
    int main(){
    	printf("%d\n",g_val);
    	return 0;
    }
    
    //代码2 编译错误
    //add.c
    static int g_val=2018;
    //test.c
    #include
    int main(){
    	printf("%d\n",g_val);
    	return 0;
    }
    
    
  6. 修饰函数-静态函数:
    一个函数被static修饰,使得这个函数只能在本源文件内使用,不能再其他源文件内使用。
    第一种情况

    //代码1
    //add.c
    int Add(int x,int y)
    {
    	return x+y;
    }
    //test.c
    #include
    extern int add(int x,int y);//可有可无,函数声明默认是extern
    int main()
    {
    	printf("%d\n",add(2+3));
    }
    
    //代码2
    //add.c
    static int add(int x,int y)
    {
    	return x+y;
    }
    //test.c
    #include
    int main()
    {
    	printf("%d\n",add(2,3));
    }
    

    第二种情况

    //代码1
    //print.c
    #include//这里加头文件因为printf()函数在stdio.h的库函数中
    void show()
    {
    	printf("Hello World!");
    }
    //test.c
    #include
    
    int main()
    {
    	show();
    }
    
extern声明函数和变量:
  1. 声明变量:
extern int a;

在变量定义前加extern关键字表示声明一个变量但不定义它 。它表示"这只是一个声明,它的定义在别的地方",关键字extern,它表示变量是在文件以外定义的,或在文件后面部分才定义.

  1. 声明函数:
extern int func1(int length, int width);

这种声明方式和一般的func1()声明方式一样。因为没有函数体,编译器必定把它作为声明而不是函数定义。extern关键字对函数来说是多余的,可选的。C语言的设计者并不要求函数的声明使用extern,这可能有些令人遗憾;如果函数声明也要求使用extern,那么在形式上与变量声明更加一致,从而减少了混乱。

define 定义常量和宏

#define ADD(x,y) x+y
#include
int main(){
	int sum = 0;
	sum = 2 * ADD(3, 4);//只做替换,不做计算,替换完结合整个表达式运算
	printf("sum=%d", sum);//输出是10不是14
	return 0;
}

指针

内存

内存是电脑重要的存储器,计算机中所有的程序的运行都在内存中运行的。
为零有效的使用内存,把内存划分成一个小小的内存单元,每个内存单元的大小是1个字节。
为了能有效访问内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
初始C语言_第4张图片

总结:

  • sizeof()用来计算数据类型字节大小的
  • 程序暂停(无其他意义):
#include 	
	int main(){
      		
	System("pause"); 	
} 	
  • C函数的默认返回值类型是整型,但是在编译时必须写函数的返回值类型
  • 函数只有在被调用的时候才会运行,否则不会运行。内部的所有临时变量都不存在。
  • 函数调用的时候如果传参了要发生形参实例化(实参传给形参产生临时变量),函数调用要形成参数的拷贝。
  • 数组是相同类型的集合。
  • sizeof()不是函数(sizeof后面的圆括号不是必须的加上只是增加界限可读型,sizoef(int)可以执行,sizeof int无法执行,函数名后面必有括号且不能为某个类型值)
  • 变量可以多次声明只能定义一次
  • 在一个文件中定义了变量,则在另一个文件中只需声明就可以使用。
  • 全局变量一般可以跨文件使用,但是 static修饰全局变量时,改变量只能在本文件中使用,生命周期不变,作用范围发生改变。
  • 内存:以一个字节为一个小方格堆积
    指针:方便查找,给内存中的每个字节带上编号,提高查找效率。编号在计算机中我们称之为地址,一般的地址具有具有明显的指向性,我们一般把地址叫做指针。
    通俗的说:没有指针将遍历查找效率低,而且还不知道查找的值是否是要的值
  • 指针和指针变量 其实并未区分
    指针就是地址
    指针变量是一个变量,变量存放的就是地址
  • 在32位平台下,指针大小都是4个字节
  • int a=10; //a代表的是空间 左值
    int b=a;//a代表的是内容,b代表的是空间 右值
  • 指针解引用:对指针解引用,代表指针所指向的目标
    int a=10;
    int *p=&a;
    printf("%d",*p);//p解引用,对p 解引用表示p所指向的a

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