<---------------------------------------------------------------->
<-----------------------------分割线------------------------------>
<---------------------------------------------------------------->
1、构造结构体完毕时,需要在大括号后面加上分号。
2、指针指向变量前,一定要给指针赋初值。
3、用一个指向数组的指针,输出数组元素的值,可以是:
int arr[10] = {0};
int * pt = arr;
cout << *pt << " " << *(pt + 9) << endl;
cout << pt[0] << " " << pt[9] << endl;
4、结构体中定义了一个数组,用指针赋值时不能直接赋予字符串的值,会导致报错。
需要使用strcpy函数或者C++中的string
比如:
15.cpp:15:13: error: incompatible types in assignment of ‘const char [11]’ to ‘char [20]’
ps->kind = "goldenfish";
#include <iostream>
int main()
{
using namespace std;
struct fish
{
char kind[20];
int weight;
double length;
};
fish * ps = new fish;
ps->kind = "goldenfish";
ps->weight = 1;
ps->length = 1.2;
cout << (*ps).kind << endl;
delete ps;
return 0;
}
5、在指定结构成员时,搞不清楚何时应使用句点运算符,何时应使用箭头运算符
如果结构标识符是结构名,则使用句点运算符;
如果结构标识符是指向结构的指针,则使用箭头运算符。
6、getline用法
exp1:数组
int data[20];
getline(data,20);
exp2:结构体
1、new动态分配内存
struct struction
{
char name [20];
};
struction *pt = new struction;
cin.getline(pt->name, 20);
exp3:用string类,而非数组
#include <string>
string str1;
getline(cin,getline);
7、在代码编写中,常量可以用常变量代替更为高效。
比如:
const int size = 20;
char arr[size] = {0};
比
char arr[20];
更加便于代码管理。
8、strcpy函数
char *strcpy(char *dest, const char *src)
将src字符串内容复制到dest字符串中
9、strcat函数
char *strcat(char *dest, const char *src)
参数
dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。
--->简单来说,给dest追加一个src指向的内容。
10、new使用注意事项
new一定要与delete配合使用!!!
若是int * pt = new int [3],则delete [] pt
11、数组元素是结构体与数组元素是结构体指针的区别
exp:
struct Pizza
{
char name[20];
float diameter;
float weight;
}
Pizza * pt = new Pizza [3];
strcpyp(pt[0].name,"hello world");
strcpyp((pt+1)->name,"hello world");
//变量pt被声明为一个Pizza结构体数组,而不是一个指向单个Pizza结构体的指针。
//因此,您需要使用数组索引语法pt[index]来访问数组中的每个单独元素
//指针访问结构体成员的标准方式是使用箭头运算符->,而数组访问结构体成员的方式是使用点运算符.
//pt指向的是数组,而非结构体,故用.
//pt是指向数组第一个元素的指针,(pt+1)是指向数组第二个元素的指针,而非指向结构体