1.枚举类型、声明指针、常量、存储类型、运算符优先级记忆

原文:1.枚举类型、声明指针、常量、存储类型、运算符优先级记忆

1.枚举类型

枚举(enumerated)类型就是指它的值为符号常量而不是字面值的类型,以下面的这种形式来声明:enum   Jar_Type {CUP,PINT,GALLON,OUART}; 这条语句声明了一个类型,称为 Jar_Type。而enum  {CUP,PINT,GALLON,OUART}; 这条语句声明表示这种类型的变量以整型的方式存储,这些符号名的实际值都是整型值。这里CUP是0,PINT是1,以此类推。下面看一下一个具体的例子:

1 #include<stdio.h>2 #include<stdlib.h>3 int main()4 {5     enum{red,blue,white};6     printf("%d,%d,%d",red,blue,white);7     system("pause");8     return 0;9 }

结果如下:

如果换成enum{red=1,blue=3,white};结果又为多少呢

适当的时候可以为这些符号名指定特定的整型值。只对部分符号名赋值也是合法的,如果某个符号名未显式指定一个值,那么它的值就比前面一个符号名的值大1。

2.声明指针

在声明指针变量时,你也可以为它指定初始值,例如:char *message="Hello world!";这条语句把message声明为一个指向字符的指针,并用字符串常量中的第1个字符的地址对该指针进行初始化。这个声明的理解,尤其要注意,表面上看上去初始值似乎是赋给表达式*message,事实上它是赋给message本身的。换句话说,前面一个声明相当于:

char *message;

message="Hello world!";看下面这个例子:

 1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5     char *message="hello,world!"; 6     //char *message; 7 //message="hello,world!"; 8     printf("%s",message); 9     printf("\nhello.world!");10     system("pause");11     return 0;12 }

结果如下:

3.常量

int  *pi;      pi是一个普通的指向整型的指针。

int  const  *pci;      则pci是一个指向整型常量的指针。你可以修改指针的值,但是你不能修改它所指向的值。

int  *  const  cpi;    则声明cpi为一个指向整型的常量指针。此时指针是常量,它的值无法修改,但你可以修改它所指向的整型的值。

4.存储类型

变量的存储类型是指存储变量值的内存类型。变量的存储类型决定变量何时创建、何时销毁以及它的值将保持多久。有三个地方可以用于存储变量:普通内存、运行是堆栈、硬件寄存器。在这三个地方存储的变量具有不同的特性。

5.运算符优先级记忆:单目运算到双目运算符,优先级高到低:算术、关系、逻辑、运算。

2011-11-23   21:23:44

时间: 2024-10-10 17:34:39

1.枚举类型、声明指针、常量、存储类型、运算符优先级记忆的相关文章

C和指针笔记 3.7 存储类型

变量的破碎类型是指存储变量值的内存类型.变量的存储类型决定变量何时创建.何时销毁以及它的值将保持多久. 有三个地方可以用于存在变量:普通内存.运行时堆栈.硬件寄存器. 变量的缺省存储类型取决于它的声明位置.凡是在任何代码块之外声明的变量问题存储于静态内存中,也就是不属于堆栈的内存,这类变量称为静态变量.对于这类变量,你无法为它们指定其他存储类型.静态变量在程序运行之前创建,在程序的整个执行期间始终存在.它始终保持原先的值,除非给它赋一个不同的值或者程序结束. 在代码块内部声明的变量的缺省存储类型

C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】

最近在看书,看到了对象在内存中的存储方式. 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针. 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指针是什么,指向的什么? 从网上找也没有找到,最后往下看,书中有些描述.说下我的理解: 类型对象指针:指向类型对象存储的地址,假如有一个类型Person,它在堆中有一块区域存储它内部的字段和成员以及两个额外成员(类型对象指针. 同步块索引 ),类型对象的类型对象指针指向的是System.Type的地址

嵌入式 Linux C语言(八)——存储类型、作用域、生命周期、链接属性

嵌入式 Linux C语言(八)--存储类型.作用域.生命周期.链接属性 一.存储类型 C语言中,每个变量和函数都有两个属性:数据类型和数据的存储类型. 变量的存储类型是指存储变量值的内存类型.变量的存储类型决定变量何时创建.何时销毁以及它的值将保持多久.计算机中有三个地方可以用于存储变量:普通内存,运行时堆和栈,硬件寄存器.变量的存储类型取决于声明变量的位置. C语言存储类别说明符: 说明符 用    法 auto 只在代码块内变量声明中被允许, 表示变量具有本地生存期 extern 出现在顶

Linux C笔记之 变量存储类型 详解

存储类型: 变量的存储类型是指存储变量值的内存类型 : 变量的存储类型决定变量何时创建.何时销毁以及它的值将保存多久 : 存储变量:普通内存.运行时堆栈.硬件寄存器: 变量的缺省存储类型取决于它的声明位置: 静态(static)变量: 在代码块之外声明的变量,存储于静态内存中,也就是不属于堆栈的内存. 静态变量,无法为它指定其他存储类型.它在程序运行之前创建,在程序的整个执行期间始终存在.它始终保持原先的值,除非给他赋一个不同的值或者程序结束. 自动(automatic)变量: 在代码块内部声明

指针的类型与指针所指向的类型

指针的类型和指针所指向的类型很明显是不一样的东西,但好多情况下却容易忽视它们的区别.指针的类型是指针自身的类型,而指针所指向的类型是指针指向的数据(内存)的类型. 指针的类型 从语法上来看,我们只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型.如: 1 int *ptr; //指针的类型是 int* 2 char *ptr; //指针的类型是 char* 3 int **ptr; //指针的类型是 int** 4 int (*ptr)[3]; //指针的类型是 int(*)[3]

C语言入门(十四)变量的作用域和存储类型

变量的作用域和存储类型 一.作用域和生存期 C程序的标识符作用域有三种:局部.全局.文件.标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性.通常,标识符的作用域都是通过它在程序中的位置隐式说明的. 1.局部作用域 前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问.函数的形式参数的作用域也是局部的,它们的作用范围仅限于函数内部所用的语句块. void add(int); main() { int num=5; add(

C语言存储类型

看c专家编程,有说存储类型一直不太清楚.看到一篇文章讲解c的存储类型,讲解了c语言中的各种变量的存储类型,而且是从进程.内存的角度讲解的,以前从没有这样理解过,觉得挺有用的,在这里转载过来. 首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图: 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的. 数据区:存放已初始化的全局变量.静态变量(全局和局部).常量数据. BBS区:存放的是未初始化的全局变量和静态变量. 栈区:由编译器自动分配释放,存放函数的参数值.返回

指针的类型和指针所指向的类型说明

指针的类型和指针所指向的类型说明 2010-03-17 15:24 1774人阅读 评论(1) 收藏 举报 编译器c 1.指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部 分就是这个指针的类型.这是指针本身所具有的类型.让我们看看例一中各 个指针的类型: (1)int*ptr;//指针的类型是int* (2)char*ptr;//指针的类型是char* (3)int**ptr;//指针的类型是int** (4)int(*ptr)[3];//指针的类型是int(*)[3]

存储类型

1.变量的存储类型是指存储变量值的内存类型,变量的存储类型决定变量何时创建.销毁. 2.变量存储的三个地方: 普通内存.运行时堆栈.硬件寄存器 1.在任何代码块外声明的变量默认为静态(static)变量,并且无法更改.存储于静态内存中,也就是不属于堆栈的内存. 静态变量在程序运行之前创建,在程序的整个执行期间都存在,并且值不变直至重新赋值. 2.代码块内部声明的变量默认是自动变量(auto),存储于堆栈中.自动变量在代码执行到声明处才被创建,离开代码快即销毁,多次执行会多次创建. 自动变量加上s