昨天主要学习了局部变量和全局变量,以及c语言中变量的存储类别。同时学习了指针的概念以及一些基础的应用。
一、局部变量和全局变量
1.局部变量
在某一个函数内部定义的变量,其一定在某个{ }范围内,其只在该{ }范围内有效,
也就是说,当不同花括号内有同名变量时,由于他们只作用在自己所在的{ }内,所以他们本质是不同的变量。
注意:局部变量所在的空间是开辟在栈上的,所以从定义的语句开始,到所在的作用域范围结束。
2.全局变量
全局变量一般不在任何一个{ }内,在任何一个函数中都可以使用这些变量。这些变量从程序一开始运行就存在,直到程序结束才销毁。
二、标识符的可见性
可见性的含义是:程序运行到某个点,哪些标识符可见。它的规则为:
1.先定义,后使用
2.同一作用域中,不能有同名标识符
3.在不同的作用域,同名标识符,相互之间没有影响
4.如果是不同的作用域但是作用域之间存在嵌套关系, 则,内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符。
三、变量的存储类别
1、auto变量
当函数中的局部变量,不专门去声明为static存储类别,都是动态的去分配存储空间的,这些变量在所在函数被调用时被分配空间,在函数调用结束时自动释放这些存储空间。
2.用static声明局部变量
当使用static声明局部变量时,这个局部变量就变成了静态局部变量,它的声明周期就会延长,从程序一开始运行,就存在,直到程序结束时才销毁。静态变量有以下特性:
1.不能用变量进行初始化,只能常量初始化
2.静态区的变量 只会被初始化一次
3.值具有继承性
3.用static声明全局变量
当用static声明全局变量时,这个全局变量就不能再使用extern进行扩展,他就只能用在本程序文件中,另外要注意函数名也为全局变量。
4.register变量
一般情况下,变量的值都是存放在内存当中,但是如果一个变量使用频繁,例如要在程序中循环10000次,这时就会影响程序运行的时间,
这时我们可以用register进行声明,将其放到寄存器中,寄存器的存取速度是远高于内存的,这就大大的提高了程序的运行速率。
5.extern声明外部变量
extern一般用在多文件编程中,如果想在当前文件使用别的文件中的全局变量,此时可以用extern进行声明,
相当于把别的文件中的变量作用域扩展到当前文件中。
三、指针
指针同样是c语言中的一种变量类型,其主要是用来存放变量的地址。
其基本语法为:基类型* 指针变量名;
基类型---表示指针变量指向的目标的数据类型
如int *p:表示定义了一个指针变量,其指向一个int型的变量。
注意:指针运算的过程:*p 过程:
1.首先拿出p指针变量中的值(地址) 到内存中定位
2.从定位处开始,偏移出sizeof(基类型)大小的一块空间
3.把这块空间当做一个 基类型的 变量来看