记录一些c/c++基础的东西!
原因为数据未初始化,问题发生在这行代码
char *p;
指针要初始化的,置为NULL。
未解决!
结构体名可不是地址,而是类似于类名,不占存储空间。
char *str = "123";
cout << str[0];
cout<<*str;//指向第一个字符
如果想获得第二个字符,可以用*str[1]吗,不行!
*str[1]执行流程为*(str[1]),str[1]是个数据,不是地址,不能用*。
(*str)[1]也不行,因为下标要求数组或指针类型。
正确做法是 cout<<*(str+n);
s[1]='a';//这个s数组不是以'\0'结束的,而是”烫“
typedef struct
{
int a;
char king[];
} KING;
KING b={1};//{}内类型与结构体内类型匹配的初始化为该值,不匹配初始化为空串。
9.判断字符串指针所指向字符串大小,应该用strlen而不是sizeof,sizeof计算的是指针本身的大小。
char str1[7];
char str2[7] = {1,1,1,1,1,1};
char *pstr= "12434";
cout << sizeof(str1) << " sizeof str1" << endl;
cout << strlen(str1) << " strlen str1" << endl;
cout << sizeof(str2) <<" sizeof str2"<< endl;
cout << strlen(str2) << " strlen str2" << endl;
cout << sizeof(pstr) << " sizeof pstr" << endl;
cout << strlen(pstr) << " strlen pstr" << endl;
结果:

str1未初始化,strlen(str1)值不一定,因为sizeof是遇到终止符才停止。
sizeof(str2)值为7,但是sizeof(pstr)值为4(32位)