1.C语言规定只有相同类型的指针才可以相互赋值. Void*指针作为左值用于接收任意类型的指针, void*指针作为右值赋给其他指针时需要强制类型转换. 2.在C语言中Const修饰的变量是只读的,本质还是变量. 口诀:左数右指  不可改变: 当Const出现在*号左边时,指针指向的数据为常量. 当Const出现在*号右边时,指针本身为常量. const int* p ; //P可变,P指向的内容不可变 int const * p; //跟上一句一样 int *const p; //p不可变,p…
void指针:主要是便于传递不同类型的参数 const指针: const char *p :const 在* 的左边表示指向一个常量指针:表示指向的内容不可变(*p不能变,p可以改变) int a = 3; int b = 4; const int *p = &a; p=&b;允许:但是*p = 5是不允许的: char * const p:const在* 的右边表示一个指针常量 int a = 3; int b = 4; char * const p = &a; p=&b…
1.void * 是不能进行运算的,例如void *p  p++; 这2个值是没有任何规律的. 2 .printf的时候打印void *p 指向的数据,必须强制类型转换,因为编译器不知道取地址多少位. 例如int a =10 ; void * p; p  =&a ; //这个还OK printf("%d \n" ,  *( int *)p); // 避免强制类型转换才可以 3.const int m =10; //表示m是不可以改变的,m++是不可以的. 4. const in…
转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻址,指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. 1  void的作用 1)   对函数返回的限定 a) 当函数不需要返…
指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const double *cptr; //cptr是一个指向double类型const对象的指针. 此处const限定了cptr指针所指向的对象类型,而非cptr本身.即cptr本身并不是const.在定义时,不需要对它进行初始化,若需要,可使cptr指向另一个const对象,但不允许使用cptr来改变所指向对…
const:常量.只读[不能变] char *p; const char *p; [T] 字符串内容可以为“hello world”或“aaa”,但只读(不可修改) char const *p; char * const p; [T] 一般为硬件资源 ,地址不变,但地址内容可变. char *p const; const char * const p; ROM volatile 防止优化指向内存地址. typedef 指针加法 指针的加法.减法运算,实际上加的是一个单位,单位的大小为sizeof…
小结: 1. typedef并没有创建一个新类型,它只是为某个已存在的类型增加了一个新的名称而已: 2. typedef声明也没有证据新的语义:通过这种方式声明的变量与通过普通方式声明的变量具有完全相同的属性: 3. 类似于#define,但typedef是由编译器解释的,因此它的文本替换供功能要超过预处理器的功能: 4. typedef可以使程序参数化,提高程序的可移植性.如果typedef声明的数据类型同机器有关,那么,当程序移植到其他机器上时,只需该表typedef类型定义就可以了. 一个…
今天一直在学习函数定义之类的问题,下午正好有机会和大家共享一下. 一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方法:bool result;result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false,注意会产生截断. 二.const 限定符 (1).用const给字面常量起个名字(标识符),这个…
(1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率. (3)static 常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的…
一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false,注意会发生截断. 二.const 限定符 (1).用const给字面常量起个名字(标识符),这个标识符就称为标识符常量:因为标识符常量的声明和使用形式很像变量,…