C2

11.21

变量的存储类别
自动变量(auto变量)不声明存储类型,则隐含指定为auto
静态局部变量(static局部变量)调用后不释放,再次调用时初值为上次调用结束时的值
寄存器变量(register变量)将变量值放在CPU的寄存器中,提高效率
外部变量(extern):一个文件中,外部变量不在文件开头定义,但之前函数需要使用,用extern声明后扩展外部变量的作用域,可合法使用外部变量。多个文件使用同一外部变量,不可分别定义,在一个文件定义后,其他文件用extern作外部变量声明,若想限制在本文件使用,使用static声明,使其变为静态外部变量,以免其他文件误用
注意:static声明对局部、全局变量的作用不同

指针
地址是内存中每一个字节分配一个号码。定义一个变量,存放上面的号码,这样的变量叫指针

i=3//将3送到i所标识的单元中
p=&i//将i的地址存在p中
*p=3//将3送到p指向的单元
*表示指向 指针变量前的*表示该变量为指针变量
printf("%o",p);以8进制形式输出指针变量p的值,例:p指向a,输出&a

指针和地址包含有类型信息,应使赋值号两侧的类型一致,以免出现意外结果

指针与函数
不能通过执行调用函数改变实参指针变量(&a)的值但可以改变实参指针变量所指变量(a)的值

指针与数组
数组名代表数组首元素的地址,例:p=&a[0];和p=a;等价
定义指针变量int *p=&a[0];   int*p;p=&a[0];   int *p=a;
指针指向数组元素时可以对指针进行加减运算,如果p指向一个元素,p+1指向同一数组的下一元素,p-1指向同一数组的上一元素(并不是简单的+—1)例:*(a+5)或*(p+5)就是a[5],若p1,p2都指向同一数组,p2-p1的值表示元素之间差的相对距离
引用数组a[]元素,用指针p++可使程序简洁高效,但不可a++,因为a是常量,a++无法实现
数组a[]中,[]实际上是变址运算符,将a[i]按a+i计算地址,然后找出此地址单位中的值

指针与函数与数组

数组名做函数参数 f(int a[],int x)将a按指针变量处理,与f(int *a,int x)等价,*a就是a[0],作用是通过调用一个函数改变实参数组的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值