概述
指針常量(Pointer to Constant)和常量指針(Constant Pointer)是C和C++中用于描述指針和常量的組合概念。
指針常量(Pointer to Constant)
指針常量本質(zhì)是一個(gè)常量,它的值不能改變,即指針始終指向同一個(gè)地址。但通過指針可以修改所指向?qū)ο蟮闹怠?/p>
int* const ptr;//表示ptr是一個(gè)指針常量,指向一個(gè)整型常量對(duì)象。
常量指針(Constant Pointer)
常量指針本質(zhì)是一個(gè)指針,它指向的對(duì)象是常量,即指針指向的對(duì)象的值不能改變。但指針本身是可變的,可以指向不同的對(duì)象。
const int* ptr;//表示ptr是一個(gè)常量指針,指向一個(gè)整型對(duì)象。
指針常量與常量指針的區(qū)別
- 指針常量的重點(diǎn)在于保護(hù)指針的值,指針本身是不可變的,不能指向不同的對(duì)象,但可以通過指針來修改所指向的對(duì)象的值。
- 常量指針的重點(diǎn)在于保護(hù)所指向的對(duì)象的值,指針本身是可變的,可以指向不同的對(duì)象,但不能通過指針修改所指向的對(duì)象的值。
指向常量的指針常量
const int * const ptr;//指向常量的指針常量,即ptr本身及其指向的對(duì)象都不能變
示例
// 指針常量
int num1 = 10;
int num2 = 20;
int* const ptr = &num1; // ptr是一個(gè)常量指針,指向num1
*ptr = 15; // 合法,通過指針修改了num1的值
// ptr = &num2; // 非法,常量指針的指向是不可變的
// 常量指針
const int num1 = 10;
const int num2 = 20;
const int* ptr = &num1; // ptr是一個(gè)指針常量,指向num1
// *ptr = 15; // 非法,不能通過指針修改所指向的對(duì)象的值
ptr = &num2; // 合法,指針可以指向不同的對(duì)象
Tips:
const關(guān)鍵字修飾*p或者int *p,就是常量指針,即指向常量的指針;
const關(guān)鍵字修飾p,就是指針常量,即指針是一個(gè)常量。文章來源:http://www.zghlxwxcb.cn/news/detail-687338.html
總結(jié)
指針常量是指指針的值不能改變,即指針始終指向同一個(gè)地址,但可以通過指針修改所指向?qū)ο蟮闹担?br> 常量指針是指指針指向的對(duì)象是常量,即指針指向的對(duì)象的值不能改變,但指針本身是可變的,可以指向不同的對(duì)象;
因此,指針常量保護(hù)了指針的指向地址不變,但允許修改所指向?qū)ο蟮闹?;常量指針保護(hù)了所指向?qū)ο蟮闹挡槐恍薷?,但允許指針指向不同的對(duì)象。文章來源地址http://www.zghlxwxcb.cn/news/detail-687338.html
到了這里,關(guān)于c語言中指針常量和常量指針的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!