栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言:关于const修饰指针的知识点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言:关于const修饰指针的知识点

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include 

//第一种方法:
//void my_strcpy(char* array1, char* array2)
//{
//	while (*array2 != '') //这里不能是array2 != '',因为地址是永远不会等于的
//	{
//		*array1 = *array2; //这里应该是要赋值,而不能是指针赋值
//		array1++;
//		array2++;
//	}
//	*array1 = *array2;
//}

//第二种方法:算法优化
//void my_strcpy(char* array1, char* array2)
//{
//	assert(array1 != NULL);//断言,需要引头文件
//	assert(array2 != NULL);//断言
//
//	while (*array1++ = *array2++)
//	{
//		;
//		//1.缺点:传的是空指针,程序崩溃,+断言就能修复这个缺点
		//2.缺点:如果传的指针反了,那程序就会崩溃
//	}
//}

//第三种方法:算法再次优化
void my_strcpy(char* array1, const char* array2)
{
	assert(array1 != NULL);//断言,需要引头文件
	assert(array2 != NULL);//断言

	while (*array1++ = *array2++) //此时指针变量位置如果反了,就会报错
	{
		;
	}
}

int main()
{
	//模拟实现库函数strcpy函数
	//int array1[20] = "xxxxxxxxxxxx"; //这里不能用一个整型数组来接受字符串
	char array1[20] = "xxxxxxxxxxxx";
	char array2[] = "Hello";

	//strcpy(array1, array2); //利用库函数来赋值数组
	//printf("%sn", array1); //%s不能输出整型数组,只能输出字符串

	my_strcpy(array1, array2);
	printf("%sn", array1);

	const int num = 10;

	//const:修饰变量,这变量就称为常变量,不能被修改
	//const如果放在*的左边,修饰*p,表示指针指向的内容不能通过地址修改。但是指针变量本身可以修改,可以改变其他变量的值
	const int* p = #
	//*p = 20;// 此时就不能再次通过地址修改num的值
	int n = 20;
	p = &n;//指针变量可以修改,但是*p不能修改

	 //const修是指针变量的时候,放在*的右边,指针不能改变,但是指针指向的内容可以随意改变
	//int* const p = #
	//*p = 20;可以通过*p修改num的值
	//int m = 20; 
	//p = &m;//这两行代码错误,指针变量已将不能被修改

	//int* p = #
	//*p = 20;//num为常变量,但是这里却能通过指针修改它的值,此时num为20

	//const int* p = #
	//*p = 20; 此时就不能再次通过地址修改num的值
	printf("%d", num);
	
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330534.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号