C++学习笔记------指针的注意事项

指针使用时,注意事项

  1. 定义指针先初始化,如果不能确定指针指向,指向0(nullptr)地址;
  2. 如果指针没有指向,不能使用*运算符,指针也不能偏移;
  3. 使用指针时,先判断(判断指针是否为空)再使用;
  4. 指针操作字符串时,不能修改字符串的值(字符串在常量区,不能修改值)运行时可能导致程序崩溃
  5. 指针数组时,防止数组越界;
  6. 堆区内存,使用完以后释放该段内存,否则会出现内存泄漏(可能会蓝屏、死机)。
  7. 堆区内存释放完以后,必须置空。否则导致野指针(坏指针)(该指针指向非法的内存)

练习代码

int *p=nullptr;
	if (p!=nullptr)
		*p = 200;
	char *pchar = "abcd";
	//*pchar = 'd';修改常量区的数据
	cout << pchar << endl;
	
	char c[10] = "abcd";
	//delete c;栈区的内存系统自动回收

	pchar = c;
	*pchar = 'd';
	cout << pchar << endl;
	/*
		char str;
		strcpy(&str, "abcd");//内存大小不够,运行时,导致程序崩溃
		cout << str << endl;
	*/
	int *p1 = new int[20];
	//p1指向的内存没有释放,导致内存泄漏
	p1 = new int[40];
	delete []p1;//释放内存,把堆区的内存归还给系统,指针变量的值没有改变.
	//p1 = nullptr;
	//没有置空导致p1是野指针
	if (p1 != nullptr)
	{
		*p1= 200;
		cout << *p1 << endl;
	}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值