'作为结尾标记. 字符串变量:char str[] = "abdc";// 等价于 char str[5] =" />
头文件:<vector>
C风格的字符数组来处理字符串:
字符串常量:const char * str = "This is a string."内存中的存储是按字符数组存储的,一个字符一个字节,末尾添加'\0'作为结尾标记.
字符串变量:char str[] = "abdc";// 等价于 char str[5] = {'a','b','c','d','\0'};
C++风格string对象:
头文件:<string>,实际上string是一个类模板
string的构造:接收const char * 类型参数。故可以string str = "hello!";
string的操作符:+、+=、=、==、!=、<、> 。string对这些操作符做了重载。
常用成员函数:append、assign(赋值,和赋值号=效果相同)、compare、insert(position,insert_str)、substr(start_index,length)、find(str)、length()、swap(str)

tips:cin会将空格符当作输入的分隔符,当要输入带空格的字符串时,采用getline(cin,string).
指针与引用:指针是C语言就存在的机制,提供了程序直接操作内存的方法。而引用是C++才有的,引用的出现是为了更加安全的使用指针,引用在底层利用的还是指针,但是它又提供了多余的保护机制。指针本身是一个变量,可以更改指针变量本身,也可以操作指针指向的内存地址。而引用任何时间都只有引用指向的变量的概念,不存在引用“本身”的概念,比如无法获取“引用”的地址(&引用变量=获取引用指向的变量的地址,这和指针不同)。其次,引用初始化之后不能更改指向,而指针可以。可以说引用是一种更加古板的指针使用。
C++中很多情况下提倡使用引用,但是有些情况只能使用指针,不能使用引用。
可能为空指针的情况下,只能是指针变量,没有空引用。
只能用函数指针,不存在函数引用
new动态创建的资源,只能用指针存储(虽然理论可以用指针,但是代码画蛇添足,不提倡!!!)
数组传参的时候,通常采用指针类型或者数组形式传参。但也有c++数组引用传参的,如下:
void print (int (&a)[10]);//该函数只能给它传递大小为10的数组作为实参。
template < typename T, size_t N>//T是类型参数,N是非类型参数
void print (const T (&a)[N] ) // 该函数可以给任意类型任意长度数组进行引用传参
{
for(const auto &item:a)
{
cout<<item<<' ';
}
cout<<endl;
}
void test5() {
int a[10] = { 1,2,3,4 };
int b[3] = { 0,4,8 };
float c[10] = { 0.0 };
print_s(a);
print_s<int,3>(b);
print_s(c);
}
template < typename T, size_t N>//T是类型参数,N是非类型参数
void print_s2( T(&a)[N])
{
// 形参a不是const的时候,可以直接修改实参
a[0] = static_cast<T>(1000);
for (const auto &item : a)
{
cout << item << ' ';
}
cout << endl;
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-80667-2.html
然后对伊拉克说虽然自己根本不愿意也没能力负责伊拉克一辈子
在维护国家主权的问题上
木子里在中国说“关你鸟事”还没事