const、typedef 、 define总结

const关键字

const=read only,修饰的为只读变量而不是常量。const修饰的变量不能用作数组的维数也不能放在switch语句的case:之后。

主要作用有:

1.通过把不希望被修改的变量或参数用const来修饰,编译器会保护这些变量不被修改增强系统的可靠性;

2.增强代码的可读性

[html] view plaincopyprint?

  1. const int a;      //a为常量不能被修改
  2. int const a;      //a为常量不能被修改
  3. const int *a;     //a为指向一个常量的指针,a的值是可以变量的
  4. int *const a;     //const修饰a,a为一个指向整型变量的指针常量

定义时必须进行初始化赋值,一经定义不能修改。上述代码1、2、4编译时会报错提示未初始化。

const和volatile关键字的后面若紧跟类型说明符则作用于类型说明符;在其他情况下,作用于它左边紧邻的指针星号。

typedef 与 define的区别体现在两个方面

1.define可以对定义的宏类型名进行扩展,而typedef不可以

[cpp] view plaincopyprint?

  1. #define peach int
  2. unsigned peach i;//没有问题
  3. typedef int peach;
  4. unsiged peach i;//错误,非法

define关键字只是简单的字符替换,而typedef可以看成是对类型的一种封装,为现有类型取个新名字。

2在连续几个变量的声明中只有typedef可以保证类型的一致性

[cpp] view plaincopyprint?

  1. #define int_ptr int *;
  2. int_ptr chalk,cheese;

chalk为int *类型,而cheese为int型。因为define只是简单的字符串替换

                                                                                                                                                                                         

typedef的特殊使用方式

用来声明函数指针

[html] view plaincopyprint?

  1. typedef void(*ptr_fun) (int);
  2. //ptr_fun是一个函数指针,参数为int型,返回值为void
  3. ptr_fun sinal(int,ptr_fun)
  4. //sinal是一个函数,接受int和ptr_fun两个类型的参数,返回值为ptr_fun

typedef int A[5];

//a是一个指向有5个元素的整型数组的数组指针,A代表的类型是(int)[5] 。也即A b={1,2,3,4,5};

时间: 2024-10-07 20:51:44

const、typedef 、 define总结的相关文章

C语言基础知识----易让人头疼的关键字----const && typedef && define

const关键字 const=read only,修饰的为只读变量而不是常量.const修饰的变量不能用作数组的维数也不能放在switch语句的case:之后. 主要作用有: 1.通过把不希望被修改的变量或参数用const来修饰,编译器会保护这些变量不被修改增强系统的可靠性: 2.增强代码的可读性 [html] view plaincopyprint? const int a;      //a为常量不能被修改 int const a;      //a为常量不能被修改 const int *a

const typedef #define

const : const修饰的什么,什么不会变.例如  int b=500; int const *a=b;const修饰*a 则*a不会变,而a可以变 int * const a=b;const修饰a 则a不会变,而*a可以变 看const修饰的是什么时,先把类型名去了再看 typedef: 给类型别名 typedef int  typename; #define : 应尽力不使用· #define a = 5.1235846 定义常量时,没有指明类型,易出错: #define 没有参加编译

C语言const与define的使用

const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助. 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题. 问题:const变量 & 常量 为什么我象下面的例子一样用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? const int n = 5;int a[n]; 答案与分

typedef Define static extern的区别

typedef Define static  extern的区别 1) #define#definePI 3.1415926 程序中的:PI*r*r 会替换为#define语句中的数字9 g 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition. extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到

C++ const与define

昨日面试被组考官问及const与define异同,开始还简单,后来被问的我脑袋是一团浆糊.今日差点资料总结一下 1. const与define. 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些.#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数.const和define定义的常量可以放在头文件里面.(小注:可以多次声明,但只能定义一次) 2. const与指针和引用. (a)const与指针. 先来看看下面的几种定

const与define的异同

1.>>const与define.两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些.#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数.const和define定义的常量可以放在头文件里面.(小注:可以多次声明,但只能定义一次) 2.>>const与指针和引用. (a)const与指针. 先来看看下面的几种定义: int me: const int * p1=&me://p1可变,*p1不可变,

iOS—— static和const联合使用;使用static const 与 #define

static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ZMJRed = 0.4; 使用static const 与 #define: 使用static const修饰变量和宏定义的比较        相同点            都不能再被修改            一处修改,其它都改了        不同点            static con

C/C++中的const与define

const int main() { const int a; int const b; const int *c; int * const d; const int * const e ; return 0; } 含义: 第一个第二个意思一样 代表一个常整形数 第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) 第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) 第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) 结

const 和 #define区别

(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const  可以节省空间,避免不必要的内存分配. 例如:           #define PI

const、define与sizeof

一.const的用途 1.定义const常量 2.可以修饰函数的形参,返回值,以及函数体.被const修饰的内容可以受到强制保护,防止被意外修改,提高程序健壮性. const 返回值 函数返回值为 const  只有用在函数返回为引用的情况. 函数返回值引用常量表示不能将函数调用表达式作为左值使用.例如前面讲的返回引用的函数 min( ). int  & min ( int  &i,  int  &j); 可以对函数调用进行赋值,因为它返回的是左值:min ( a ,  b )=4