易截截图软件、单文件、免安装、纯绿色、仅160KB

解析C与C++中的关键字const

 
 
在C与C++语言中都存在关键字const,很多人都对此关键字存在一个错误的认识,认为在C语言中关键字const是使变量作为一个常量,即将变量常量化,就像宏定义一样。而在C语言中的关键字const所起的作用并不是使变量常量话,而是限制变量,使变量除了被赋初值外,无法被重新赋值。
而在C++中关键字const不仅使该变量无法修改,也是使变量常量化,即将变量赋初值后可以当作常量使用,相当于进行了宏定义。
在编译器中输入以下代码,你会有更直观的体会。
 
 在C语言编译器中:
 
/* const限制的变量的值无法修改*/
#include <stdio.h>
int main(void)
{
const int a=1;
int const b=1;
a=1;
b=1;
system("pause");
return 0;

当你将这段代码编译时,编译器会报错:在mian函数中无法修改const限制的对象。
 
 
 
注:在C语言中,关键字const被放在标识符之前或之后是一样的效果。
 
 
 
/* const限制的变量无法修改*/
#include <stdio.h>
int main(void)
{
const int a=1;
switch(1)
{
case a:prinf("variable a can be used as constant");break;
default :printf("variable a cannot be used as constant");
}
system("pause");
return 0;
}

当你编译这段代码是,编译器会报错:在main函数中要求使用常量。
 
 
 
关键字const对指针的限制:
/*cosnt在*前,指针指向对象的值无法修改*/
#include <stdio.h>
int main(void)
{
int a=1,b=2;
const int * p1=&a;
int const * p2=&b;
*p1=1;
*p2=1;
system("pause");
return 0;
}

const在星号前对对指针变量进行限制时是对指针变量所指向的对象进行限制,针对上列代码就是对a,b进行限制,使a,b不能被重新赋值,因此编译时会报错:在mian函数中无法修改const限制的对象。但两个指针变量的值是可以修改的。编译下列代码:
 
/* cosnt在*前,指针变量的值可以修改*/
#include <stdio.h>
int main(void)
{
int a=1,b=2;
const int * p1=&a;
int const * p2=&b;
printf ("a=%d\nb=%d\n",*p1,*p2);
p1=&b;
if(p1==p2)
printf("the address of p1 is equal to the address of p2\n");
system("pause");
re


相关文档:

C中读取数组

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
main()
{
FILE *fp;
if ( (fp = fopen( "c:\\a.txt", "r" )) == NULL ) printf("ERROR!\n");
int tmp[MAXSIZE];
int i;
for ( i=0; i<MAXSIZE; i++ )
{
tmp[i] = 0; ......

linux编写c程序发现

这几天我安装了一个Linux系统,想在里面学一下C语言的编写,发现在里面运行有一个好奇怪的现象:如下面
#include<stdio.h>
void mian(){
printf("hello world!");
}
输出没有结果!搞的我看了半天,程序没有错误啊!怎么这样!后来我把程序改为
#include<stdio.h>
void mian(){
printf("hello ......

C/C++单元测试理论精要(十)

3.3 高效率开发
    这一节介绍利用单元测试实现高效率开发。单元测试可以在几个方面提高开发效率:测试驱动开发、可视编程、快速排错、和提高调试效率。
测试驱动开发
    指先编写测试代码,然后再编写产品代码使测试通过,有很多相关文章和书籍介绍这方面知识,限于编幅,这里就不讲了 ......

memcached 与c/c++运用

修改makefile,在LIBS里面加上-lmemcached,比如原来 gcc test.c,现在 gcc test.c -lmemcached。这个库就是libmemcached提供的。
然后添加#include<libmemcached/memcached.h>,这个文件也是libmemcached提供的。
主函数里面需要添加:
    memcached_st *memc;
    uint32_t&nbs ......

C测试小程序

C测试小程序
1、                 字符串类
1.1        strstr
功能:查找和获取子串
void test_strstr()
{
        char *str="Borland   Inte ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号