C语言基础知识----易让人头疼的关键字----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

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

时间: 2024-10-03 22:54:22

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

OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的

C#语言基础知识(2):C#中多态

我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态. 1: OverRide 实现多态 1 public class Animal 2 { 3 public virtual void Eat() 4 { 5 Console.WriteLine("Animal eat"); 6 } 7 } 8 public class Dog : Animal 9 { 10 public override void Eat() 11 { 12 Console.WriteLin

李洪强iOS开发之OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程   二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行

C#语言基础知识(1):C#中关于重载和重写

Overload:重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同. 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace OverLoading 6 { 7 class Program 8 { 9 public static int max(int i, int j) //静态方法 10 { 11 if (i > j) 12 re

C#语言基础知识(3):C#中转义符

C#转义字符: 一种特殊的字符常量:以反斜线"\"开头,后跟一个或几个字符.具有特定的含义,不同于字符原有的意义,故称“转义”字符.主要用来表示那些用一般字符不便于表示的控制代码. 它的作用是消除紧随其后的字符的原有含义用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义” 用可以看见的字符表示那不可以看见的字符, 如'\n'表示换行 常用的转义字符及其含义: \’ 单引号\” 双引号\\ 反斜杠\0 空\a 警告(产生峰鸣)\b 退格\f 换页\

C#语言基础知识(4):C#中的String.Format方法

定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2="xiaobei";Response.Write(String.Format("Hello {0},I'm {1}",p1,p1));(2)Response.Write(String.Format("Hello {0},I'm {1}","xi

C#语言基础知识(9):ScrollBarsEnabled的使用

在WinForm中通过WebBrowser获取网页,我想把WebBrowser的ScollBar去掉,我的网页不需要滚动条. 设置方法如下:单击WebBrowser设计页面,在属性页面有一个ScrollBarsEnabled.设置为false即可. C#语言基础知识(9):ScrollBarsEnabled的使用

C#语言基础知识(5):Partial Class部分类

Partial Class,部分类 或者分布类.顾名思义,就是将一个类分成多个部分.比如说:一个类中有3个方法,在VS 2005将该类中3个方法分别存放在3个不同的.cs文件中.这样做的好处:1.一个大型的项目类可以同时分成不同的区块交由不同的程序员拽写,同时进行.2.若由系统自动产生的source,可以用独立的Partial Class加入,而不必更改到原先类.3.当类(Class)很大时,可以用Partial Class做功能性划分,这也是一种不错的分类方式. 如果您在开发项目的公用函数库,

C#语言基础知识(7):NotifyIcon控件

NotifyIcon就是系统托盘控件.通知区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行,如防病毒程序或音量控制.这些进程不会具有自己的用户界面.NotifyIcon 类提供了编写此功能的方法.Icon属性定义显示在通知区域中的图标.图标的弹出菜单由ContextMenu属性确定.Text属性分配工具提示文本.要在通知区域中显示图标,必须将Visible属性设置为 true. 如下图所示: 向Form1窗口中添加一个NotifyIcon控件,修改其Name属性为 TheNotifyI