野指针及字符串常量的赋值“=”和复制“strcpy”

本文探讨了C++和C语言中字符串操作的相关问题,包括野指针的概念及其风险,以及字符串常量赋值与复制的区别。指出在进行字符串赋值时,实际上只是复制了首地址,而非字符串内容本身。同时,强调了在使用字符串复制函数如strcpy()的重要性,以及char*与const char*在处理字符串常量时的角色。
摘要由CSDN通过智能技术生成

字符串的大多数操作都是通过指针来完成的,包括sring类内的重载操作符的实现。

野指针

char *name;
scanf("%s",name);

这个比较好理解,指针name没有被初始化,也就是说name指向的地址是不明确的,在这种情况下写数据很有可能擦除其他有用内存数据或导致程序崩溃,(int *p; *p=5)同上。
知识点:

  1. 创建一个指针时,系统只分配了存储指针本身的内存,并没有分配存储数据的内存。
  2. 使用指针前必须用已分配的地址初始化它或者使用动态内存分配开辟内存空间给它或显示的指明数组大小:char name[20]。

字符串常量赋值

#include<iostream>
#include<string>
using namespace std;

int main()
{
   
	const char* str1 = "hello world";
	const char* str2;
	str2 = str1;
	cout << str2 << endl;
	cout << &str1 << endl;
	cout << &str2 << endl;
	cout << static_cast<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值