17.常量指针和指针常量区别?

17.常量指针和指针常量区别?

1)常量指针(指向常量的指针)

语法:const 数据类型 *变量名;

不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。

注意:

●指向的变量(对象)可以改变(之前是指向变量a的,后来可以改为指向变量b)。

●一般用于修饰函数的形参,表示不希望在函数里修改内存地址中的值。

●如果用于形参,虽然指向的对象可以改变,但这么做没有任何意义。

●如果形参的值不需要改变,建议加上const修饰,程序可读性更好。

2)指针常量(指针是常量)

语法:数据类型 * const 变量名;

指向的变量(对象)不可改变。

注意:

●在定义的同时必须初始化,否则没有意义。

●可以通过解引用的方法修改内存地址中的值。

●C++编译器把指针常量做了一些特别的处理,改头换面之后,有一个新的名字,叫引用。

3)常指针常量

语法:const 数据类型 * const 变量名;

指向的变量(对象)不可改变,不能通过解引用的方法修改内存地址中的值。

常引用。

常量指针:指针指向可以改,指针指向的值不可以更改。

指针常量:指针指向不可以改,指针指向的值可以更改。

常指针常量:指针指向不可以改,指针指向的值不可以更改。

记忆秘诀:*表示指针,指针在前先读指针;指针在前指针就不允许改变。

常量指针:const 数据类型 *变量名

指针常量:数据类型 * const 变量名

示例:

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。

void func(const int *no, const string *str)    // 向超女表白的函数。 
{
	// *no = 8;
	// *str = "我有一只小小鸟。";
	cout << "亲爱的" << *no << "号:" << *str << endl;
}

int main()
{
	int a = 3, b = 8;

	// 常量指针的语法:const 数据类型* 变量名;
	// 不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。
	/*
	const int* p = &a;
	a = 13;
	cout << "a=" << a << ",*p=" << *p << endl;
	p = &b;
	cout << "b=" << b << ",*p=" << *p << endl;
	*/

	// 指针常量语法:数据类型* const 变量名;
	// 指向的变量(对象)不可改变;在定义的同时必须初始化;可以通过解引用的方法修改内存地址中的值。
	int* const p=&a;
	*p = 13;
	cout << "a=" << a << ",*p=" << *p << endl;

	//int bh = 3;      // 超女的编号。
	//string message = "我是一只傻傻鸟。";          // 向超女表白的内容。
	//
	//func(&bh, &message);            // 调用向超女表白的函数。

	//cout << "亲爱的" << bh << "号:" << message << endl;
}
posted @   CodeMagicianT  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示