常变量

1、左值与右值

a=10;//a为左值,只有写权限,在赋值号左边。其他为右值

b=a;//a为右值,读权限

2、const的作用

(1)定义常变量,只读变量,不能写;如:const int a=100.定义常变量时必须初始化。

(2)类型对于const透明。即const int  a=100等价于 int const a=100

(3)const直接修饰部分,不能做左值,不能修改。const int a=100;a=200//error,a做了左值,所以错误

(4)权限只能同等传递或者缩小,不能扩大。

const int *p1=&a;//等价于   int const *p1=&a;

p1=&b;//ok

*p1=20;//error,const修饰*,所以不能解引用

int * const p2=&a;

p2=&b;//error,const修饰p2,p2的值不能修改

*p2=100;//ok,不修饰*,所以可以解引用

const int * const p3=&a

p3=&b;//error,第二个const 使p3的值不能被修改

*p3=100;//error,第一个const使p3不能解引用

char *Mystrcpy(char* des,const cha * src)//功能字符串拷贝,返回值为指针,形参为指针

{

char *p=*des;

while(*des++ = *src++);

return p;

}

3、断言assert

使用函数assert();时先调用#include如:

#include

assert(b!=0)//断言b不等于0,但b不等于0时对函数无影响,当b等于0时,程序崩溃,并报告出错位置

发布程序时,用release,此时assert函数失效,如遇到错误,程序崩溃,用户界面会显示遇到未知错误;

而写程序时用debug

4、计算字符串有效长度

int Mystrlen(const char *str)//不允许解引用,即不允许修改原来的字符串中的内容

{

int i=0;

while(str[i++] != '\0');

return i-1;

}

int Mystrlen(const char *str)//不允许解引用,即不允许修改原来的字符串中的内容

{

int i=0;

for(;str[i] != '\0';i++);

return i-1;

}




你可能感兴趣的:(常变量)