1. warning:deprecated conversion from string constant to ‘char *’解决方案
源代码如下:
char *str = "I love math."
然后出现了warning。原因是:
char *背后的含义是:给我个字符串,我要修改它。
而理论上,我们传给函数的字面常量是没法被修改的。
所以说,比较和理的办法是把参数类型修改为const char *。
2. string类型不能赋值为NULL
⇨NULL和 “” 的区别
NULL代表声明了一个空对象,根本就不是一个字符串。
“”代表声明了一个对象实例,这个对象实例的值是一个长度为0的字符串。
⇨具体原因
String s=null;只是定义了一个句柄,也就是说你有了个引用,但是这个引用未指向任何内存空间
String s=”“;这个引用已经指向了一块是空字符串的内存空间,所以你可以对它操作,而不用担心什么了
3. string类型可以和char*类型直接合并
例如:
string s = "I like";
const char *str = "math!";
s += str;
4.struct声明、定义、和初始化的方式
补充:如果变量再声明、定义时没有初始化,则赋该类型的默认值。
⇨方式一
/*声明一个结构体类型Student*/
struct Student
{
int num; //包括一个整型变量num
char name[20]; //包括一个字符数组name,可以容纳20个字符
char sex; //包括一个字符变量sex
int age; //包括一个整型变量age
float score; //包括一个单精度型变量
char addr[30]; //包括一个字符数组addr,可以容纳30个字符
}; //最后有一个分号
/*定义一个结构体*/
Student student1, student2;
/*初始化*/
student1 = {10001, "Zhang Xin", 'M', 19, 90.5, "Shanghai"}
⇨方式二
/*声明一个结构体类型Student*/
struct Student
{
int num; //包括一个整型变量num
char name[20]; //包括一个字符数组name,可以容纳20个字符
char sex; //包括一个字符变量sex
int age; //包括一个整型变量age
float score; //包括一个单精度型变量
char addr[30]; //包括一个字符数组addr,可以容纳30个字符
}; //最后有一个分号
/*定义并初始化一个结构体*/
Student student1 = {10001, "Zhang Xin", 'M', 19, 90.5, "Shanghai"}
⇨方式三
/*声明、定义及初始化*/
struct Student
{
int num; //包括一个整型变量num
char name[20]; //包括一个字符数组name,可以容纳20个字符
char sex; //包括一个字符变量sex
int age; //包括一个整型变量age
float score; //包括一个单精度型变量
char addr[30]; //包括一个字符数组addr,可以容纳30个字符
}Student student1 = {10001, "Zhang Xin", 'M', 19, 90.5, "Shanghai"};
附:今天看到的一种形式
struct { int number; string str[10]; }keywords={3,"int","main","return"} ; //关键词
struct { int number; string str[10]; } operators ={5,"+","*","=","+=","*="}; //运算符
struct { int number; string str[10]; } boundaries ={6,"(",")","{","}",",",";"} ; //分界符
struct { int number; string str[100];} identifieres={0}; //标识符
struct { int number; string str[100];} Unsigned_integer={0}; //无符号整数