c语言声明

1: 声明的语法:
(a) 存储类型(b)存储限定, (c)类型说明 (d) 声明符
例如:static const int i;
(a)存储类型包括:auto(一般是在函数题里面,用完就不要了),static(函数结束才释放), extern(在外面声明的) 和register(寄存器变量,保存在寄存器中而不是内存中)
(b)类型限定符包括:const(常量,值不可修改了) 和volatile(这个一般会用在嵌入式的底层里面用到的)
(c)类型说明符包括:void,char,short,int,long,float,double,signed,unsigned,结构,联合和枚举


2:存储类型
变量的三个特性:
a,存储期限,氛围自动存储期限和静态存储期限
b,作用域,分为块作用域和文件作用域
c,链接,分为外部链接,内部链接和无链接
外部链接的变量可以被几个文件共享
内部链接的变量智能在当前文件共享,例如static int i;
无链接的变量属于单独的函数,不能被共享

++++++++++++++++++

//
//  main.c
//  ShengMing
//
//  Created by 千 on 16/7/24.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#include <stdio.h>

int a;//静态存储期限
//文件作用域
//外部链接,可以被几个文件共享

static int c;//快外的static 由外部链接转换为内部链接,
//内部链接,只能在当前的文件共享

void f(){
    //自动存储期限
    //无链接,属于单独的函数,不能被共享,只有自己的函数内部能用
    int b;
    //块作用域,片警
    
    static int d;//快内的static 变量由自动存储期限改为静态存储期限。

    
    
}
int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    
    int age =20;
    static const int a = 10;
    //后面这个顺序是错误的 const static int a = 10 ;
    
    //不可以修改为a=200;因为const定义的是不可修改的
    
    
    return 0;
}


++++++++++++++++++
注意auto 是在函数里面的默认的,extern 是在函数外面的时候的默认的

2.2 auto 存储类型,只属于某个代码块(就是函数里面),具有自动存储期限,块作用域并且无链接,(auto 一般是在函数题里面,用完就不要了 可以不写,默认的就是)
2.3 static 存储类型,快外的static 由外部链接转换为内部链接,快内的static 变量由自动存储期限改为静态存储期限。
2.4 extern 存储类型,可以是几个文件共享该变量,例如extern int i;i变量只是声明而不是定义,一个变量可以声明多次,但职能定义一次。extern声明的变量始终是具有静态存储期限(extern 一般是在函数体外,就是快外,默认的就是extern的)
2.5 函数的存储类型,只有两个extern 和static,extern具有外部链接,static 具有内部链接,如果不佳任何关键字默认具有外部链接


const 有点像宏定义,


4:声明符号
规律:
a,始终从内向外读声明符
b,在作选择时始终先[]后()后*

由标识符*号()以及[]来组成,这些符号可以
int *ap[10];//这个叫指针数组呢,还是数组指针呢?这个由一个规律
// []优先级高,所以ap是指向数组的指针
float *fp(float);//()优先级高,所以fp是返回指针的数组
void (*pf)(int);//*pf在括号里面pf是指针,后面跟着(),所以pf必须只想函数







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值