c语言声明

来源:互联网 发布:朋友印象是什么软件 编辑:程序博客网 时间:2024/05/18 00:20
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必须只想函数







0 0