#include <iostream>
#include <string.h>
using namespace std;
#define PASS "what"
int main()
{
string pass = "what";
char *pass1 = "what";
cout << pass.length() <<endl;
cout << sizeof(pass) <<endl;
cout << sizeof(pass1) <<endl;
cout << sizeof(PASS) << endl;
cout << strlen(PASS) <<endl;
cout << strlen(pass1) <<endl;
cout << pass[2] << endl;
cout << PASS[2] << endl;
return 0;
}
输出:4 4 4 5 4 4 a a
同样一个字符串“what”用宏定义PASS之后,PASS既可以当做指针用,也可以当做变量名用,而用字符串pass定义的话只能用作一个变量名,不能作为指针。
sizeof()返回的是变量声明后所占的内存数,不是实际长度,sizeof不是函数,仅仅是一个操作符。
strlen是函数,求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,不包含‘\0’