码迷,mamicode.com
首页 > 其他好文 > 详细

const基本用法

时间:2015-07-16 11:17:02      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

1、const int a=1;  //此时a为常量,其值不能改变,而且在定义的同时必须初始化

错误的程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    const int a;
    a=1;
    
}

a在定义的同时没有初始化,同时后面又尝试修改a的值。

正确的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    const int a=1;
}

2、const int *p;    //p指向的内容不可变,但是可以使该指针指向其他的int型变量

错误的代码:

int main()
{
    int val=1;
    const int *p=&val;
    *p=3;
}

此时,尝试通过指针修改其指向的内容,报错:error: assignment of read-only location ‘* p‘

正确的代码:

int main()
{
    int val=1;
    const int *p=&val;
    val=3;

    printf("%d\n",*p);
}

虽然不能通过指针修改其指向的内容,但是可以通过原变量的名直接修改其指向的内容。

正确代码2:

int main()
{
    int val=1;
    int k=3;
    const int * p=&val;
    p=&k;

    printf("%d\n",*p);
}

虽然不能通过指针改变其指向对象的值,但是可以修改该指针的指向,且指针p在定义的同时,不一定要同时初始化。

3、int * const p=&val;    //此时p只能指向变量val,不能指向其他变量

错误的代码:

int main()
{
    int val=1;
    int k=3;
    int * const p=&val;
    p=&k;

    printf("%d\n",*p);
}

此时会报错:error: assignment of read-only variable ‘p‘

正确代码2:

int main()
{
    int val=1;
    int * const p=&val;
    *p=3;

    printf("%d\n",*p);
}

虽然不能改变指针的指向,但是可以通过指针改变其指向的对象的值。

4、const int * const p=&val;    //指针p的指向不能被改变,同时其指向的内容的值也不能通过该指针改变

错误的代码:

int main()
{
    int val=1;
    int k=3;
    const int * const p=&val;

    p=&k;

    *p=3;

}

此时,会有两个错误:

1)error: assignment of read-only variable ‘p‘,说明p的指向时不能改变的;

2)error: assignment of read-only location ‘*(const int*)p‘,说明p指向的对象(val),不能通过指针修改其值。

但是:

int main()
{
    int val=1;
    const int * const p=&val;
    val=3;
}

我们仍然可以通过变量名来修改其值,也就是说我们所说的“指向的对象的值不能改变”是说不能通过指针的方式修改。

 

const基本用法

标签:

原文地址:http://www.cnblogs.com/acode/p/4650478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!