C++语法基础篇-类、结构体、指针、引用
类可以将变量、数组和函数完美地打包在一起。
类与结构体
1.类的定义
类中的变量和函数被统一称为类的成员变量。
private后面的内容是私有成员变量,在类的外部不能访问;public后面的内容是公有成员变量,在类的外部可以访问。
2.类的使用
#include <iostream>
using namespace std;
const int N = 1000010;
class Person
{
private:
int age, height;
double money;
string books[100];
public:
string name;
void say()
{
cout << "I'm " << name << endl;
}
int set_age(int a)
{
age = a;
}
int get_age()
{
return age;
}
void add_money(double x)
{
money += x;
}
} person_a, person_b, persons[100];
int main()
{
Person c;
c.name = "yxc"; // 正确!访问公有变量
c.age = 18; // 错误!访问私有变量
c.set_age(18); // 正确!set_age()是共有成员变量
c.add_money(100);
c.say();
cout << c.get_age() << endl;
return 0;
}
3.结构体
结构体和类的作用是一样的。不同点在于类默认是private,结构体默认是public。(唯一区别)
结构体的定义
指针与引用
1.指针
指针指向存放变量的值的地址。因此我们可以通过指针来修改变量的值
数组名是一种特殊的指针。指针可以做运算:
2.引用
引用和指针类似,相当于给变量起了个别名。
引用的定义
链表
使用链表可以快速地理解上述的4个概念!
/*
链表的基本操作
*/
#include<iostream>
using namespace std;
//定义节点的结构体
struct Node{
int val;
Node * next;
Node(int _val):val(_val),next(NULL){} //有参构造
};
int main(){
Node* p =new Node(1); //返回的地址,类似java 等价写法:Node node = Node(1); Node *p=&node;
Node* q =new Node(2); //auto,可以自动识别new Node返回值的类型 (但是当前编译器过老不支持auto语法!)
Node* o =new Node(3);
p->next=q; //p指向q
q->next=o; //q指向o
Node* head=p; //定义头节点,主要是用于记录
//添加一个节点(头插法)
Node* u =new Node(4);
u->next=head; //新加节点指向头节点
head=u; //更新头节点
//删除一个节点(链表的删除,不是说将这个节点干掉,而是在原链表遍历的时候,遍历不到即可!)
head->next=head->next->next;
//遍历链表
for(Node* i=head;i;i=i->next){
cout<<i->val<<endl;
}
return 0;
}