前言:
由于我个人在学习c语言的时候会遇到一些比较费解东西,所以这篇文章我就想谈谈我自己对这些知识点的接见,如果有错误的地方还希望大家能帮忙斧正一下
变量
1.变量分为 局部变量 和 全局变量,这两种变量的区别就是作用域不同
局部变量:作用域是一个代码块(就是一个大括号里面的内容,包括函数和循环),进入代码块创建变量,离开代码块就销毁变量释放空间
全局变量:作用域是整个程序,与整个程序共存亡
但局部变量和全局变量同名的时候(虽然我强烈反对这样使用),局部变量优先使用,这波是 近水楼台先得月
当然这边 局部变量和全局变量的定义使用的形式都是一样的,只是由于定义的位置不同才会产生上面的区别
常量
常量也分为四种: 字面常量;const 修饰的常变量;#define 定义的标识符常量;枚举变量
这边一种一种的来介绍一下:
1.字面常量,就是 数字 字母都被成为字面常量
2.const修饰的常变量:本质上还是变量,但是具有不可变性,例如不能用在switch里面case后面(因为case后面只能接 整形常量),改变的话会直接报错
3.#define 修饰的标识符常量用法
#define MAX 100 ,需要注意的话 按照习惯一般把常量名称全用大写字母,语句的后面没有分号 ; ,本质上就是使用100去替换程序里面出现的 MAX
4.枚举变量,这个的话我后面会继续发文章来介绍
字符串和转义字符
使用 " " 引起来的是字符串,使用 ' ' 引起来的是字符
字符串的结束标志是 ' \0 ' ,但是这个转义字符是不算做字符串的内容的
转义字符 :在c语言中利用 \ 和一些特殊的字母来实现一些特殊的操作
typedef 类型定义,也可以理解为类型重命名
例如 typedef unsigned int uint_32; unint_32 a = 5; 本质就是使用 uint_32来代替 unsigned int
static 静态,用来修饰函数和变量的,总的来说static能够改变 变量 或者 函数的生命周期使得程序运行到作用域之外,变量还是存在没有被释放空间而销毁,
另外一个特点,被static修饰的全局变量或者函数只能在本源文件里面使用,不能在其他源文件使用
指针
首先我们需要知道 当我们定义一个变量的时候,系统会为这个变量在内存里面开辟出来一个连续空间,并且我们可以通过& 符号来得到这个变量第一个字节在内存的空间,那么这个时候就能引入一个新的东西——指针
指针就是能够储存变量的地址的变量,这边需要注意的是 指针不是一种数据类型它的本质还是一些基本数据类型
我们先定义一个变量 int a = 5;
在定义一个指向int类型的指针变量 int *a1 = &a;
这个时候a1 就是表示 a的地址,*a1 就是表示取出a1地址的值
指针也是一个变量,系统自然也要为它分配内存空间,所以指针也具有地址和内存大小
地址的话我们可以创建一个二维的指针用以表示,大小的话同样可以使用库函数sizeof()来查看
这边需要说明的是指针在32位的平台大小是4个字节,在64位平台是8个字节,指向int类型的指针和指向char类型变量的指针在同一个平台下面大小是一样得到
这只是对c里面的内容的一个大致的介绍,具体的内容我以后会写出文章详细的介绍的