简述限定组配的类型限定符

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

const关键字用于限定一个变量为只读即其值不能通过赋值、递增、递减等操作来修改。(但允许初始化)


const在‘*’咗侧时限定了(地址所对应的)内容不可变;

const在‘*’右侧时,限定了指针本身(即该指针所指的地址)不可变

函数是不能改变参数列表中实参变量的值的,比如:

令变量num作为ADD()的实参后输出的num并没有改变(有人会误认为num会变成了1)。

但是如果ADD()做如下的改变结果就不一样了:

当参数为一个数组时,函数能令实参数组num的值被更改

实际上,int a [ ]等价于int * a也就是说此时ADD()的第一个参数是一个指针。

ADD()函数通过指针num改变了地址所对应的数值其过程如下图:

这种情况很容易被忽略,所以我们往往用const来限定函数的指针形参(包括数组)所指的内容:

此时编译器就会报错(注意:const int a[ ]等价于const int * a所以限定的是地址所对应的内容只读),起到了一定意义上对数组数据的保护作用

鼡#define定义一个常量和用const定义一个只读变量的效果经常会看起来很像:

1、#define只是在预处理时将代码中的每个PI部分一模一样展开,PI并不是一个变量不需要有类型限定符;

2、#define定义的常量是可以用#undef来取消定义的,然后再为PI重新定义一个内容

3、当用#define定义时是不会分配内存的;

在定义全局变量时,因为全局变量被“暴露在外”很容易被修改,在需要的时候会用const限定符来保护全局变量

}

我在想一个问题你是不是要表達

你对这个回答的评价是?

}

    相关搜索修饰符访问修饰符java修饰苻类的修饰符接口的修饰符c#访问修饰符python@修饰符c#修饰符访问控制修饰符

}

我要回帖

更多关于 类型限定符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信