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 @ 2023-07-03 21:17  CodeMagicianT  阅读(110)  评论(0编辑  收藏  举报