文章目录
一、C语言中的字符串
C语言中使用一个以’\0’结尾的字符数组来表示一个字符串;
使用字符串相关函数需要引入库"string.h";
C和C++严格区分单引号和双引号,单引号只能用来表示单个字符。
#include "stdio.h"
#include "string.h"
int main() {
char a[] = "abcdefg";
printf("%d\n", sizeof(a));//输出8
printf("%d\n", strlen(a));//输出7
return 0;
}
char site2[6] = {'A', 'U', 'N', 'O', 'B'}; //这是一个字符数组
char site1[7] = {'A', 'U', 'N', 'O', 'B', '\0'}; //这是一个字符串
二、C++中的字符串
首先,C++兼容C语言中的字符串,C++自身又提供了字符串类string,使用时需要引入头文件"string",string依然可以使用数组的方式进行元素读取。
#include<string>
#include<iostream>
using namespace std;
int main(void) {
string a = "abcde";
cout << a.length() << endl; //输出5
cout << sizeof(a) << endl; //输出32
}
三、python中的字符串
python中不严格区分字符和字符串,单引号和双引号在字符串问题上没有区别。
a = "abcdefg"
#输出7
print(len(a))
python中字符串是不可变对象
a = "aaa"
#以下语句并不是修改原先的字符串,
#而是又开辟一块内存,值为"bbb",然后a指向该内存
a = "bbb"
python会对字符串常量进行池化,至于多长的字符串会被池化,在ipython环境中超过100位的英文字符串依然被池化,而包含4个中文的字符串未池化。
a = "abcdefg"
b = "abcdefg"
#以下语句为True
id(a) == id(b)
类似的池化也会发生在整形变量上,ipython环境下,0–256会被池化。