字符串:字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
char greeting[] = "Hello"; C++ 编译器会在初始化数组时,自动把 '\0' 放在字符串的末尾
c风格字符串:
#include<cstring>: strcpy(s1,s2) // strcat(s1,s2) // strlen(s1) // strcmp(s1,s2) // strchr(s1,ch) // strstr(s1,s2)
c++中的string类:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// 复制 str1 到 str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
指针:
指针类型:
int *ip; /* 一个整型的指针 */
double *dp; /* 一个 double 型的指针 */
float *fp; /* 一个浮点型的指针 */
char *ch; /* 一个字符型的指针 */
所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
NULL指针: int *ptr = NULL; -->ptr = 0
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
我们喜欢在程序中使用指针代替数组,因为变量指针可以递增,而数组不能递增,因为数组是一个常量指针。下面的程序递增变量指针,以便顺序访问数组中的每一个元素
#include <iostream>
using namespace std;
const int MAX = 3;
int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// 指针中的数组地址
ptr = var;
for (int i = 0; i < MAX; i++)
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// 移动到下一个位置
ptr++;
}
return 0;
}
指针的比较:
#include <iostream>
using namespace std;
const int MAX = 3;
int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// 指针中第一个元素的地址
ptr = var;
int i = 0;
while ( ptr <= &var[MAX - 1] )
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// 指向上一个位置
ptr++;
i++;
}
return 0;
}
数组的头地址是不能改变的
c++指针数组:
#include <iostream>
using namespace std;
int MAX = 4;
int main ()
{
int *names[MAX] = {NULL,NULL,NULL,NULL}; // int *names[MAX] 声明
int content[MAX] = {2,3,4,5};
for (int i = 0; i < MAX; i++)
{
names[i] = &content[i];
cout << "Value of names[" << i << "] = ";
cout << names[i] << endl;
}
return 0;
}
可以用一个指向字符的指针数组来存储一个字符串列表:
#include <iostream>
using namespace std;
int MAX = 4;
int main ()
{
char *names[MAX] = {"fg","gh","ty","hj"}; // int *names[MAX] 声明
int *names_1[MAX] = {NULL,NULL,NULL,NULL};
int content[MAX] = {2,3,4,5};
for (int i = 0; i < MAX; i++)
{
//names[i] = &content[i];
cout << "Value of names[" << i << "] = ";
cout << names[i] << endl;
cout << names_1[i] << endl;
}
return 0;
}