您的位置:首页 > 编程语言 > C语言/C++

c语言声明

2016-07-24 01:50 239 查看
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必须只想函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: