字符串的大多数操作都是通过指针来完成的,包括sring类内的重载操作符的实现。
野指针
char *name;
scanf("%s",name);
这个比较好理解,指针name没有被初始化,也就是说name指向的地址是不明确的,在这种情况下写数据很有可能擦除其他有用内存数据或导致程序崩溃,(int *p; *p=5)同上。
知识点:
- 创建一个指针时,系统只分配了存储指针本身的内存,并没有分配存储数据的内存。
- 使用指针前必须用已分配的地址初始化它或者使用动态内存分配开辟内存空间给它或显示的指明数组大小: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<