类、结构体、指针和引用
指针
#include<iostream>
using namespace std;
char a,b;//外面定义的变量存放堆中
int main(){
int a=10;
int* p=&a;//&a是a的地址,*的含义是定义的变量是指针类型,变量的名字是p
int** q=&p;//q是指针的指针,在定义的时候*号是起指示作用的,只是说明这个变量是指针类型。
cout<<*p<<endl;//此处p的含义是取p中地址的值
*p=12; //将12赋给p地址中的值
cout<<a<<endl;
return 0;
}
指针与数组的关系
#include<iostream>
using namespace std;
char a,b;//外面定义的变量存放堆中
int main(){
int a[3]={1,2,6};
cout<<*(a+1)<<endl;//a代表地址,*a代表起始地址的值即a[0]
return 0;
}
引用
#include<iostream>
using namespace std;
int main(){
int a=10;
int* pp=&a;//&a是a的地址,*的含义是定义的变量是指针类型,变量的名字是p
int& p=a; //给a起了个别名,引用
a=12;
cout<<p<<endl;
}
链表
#include<iostream>
using namespace std;
struct Node{
int val;
Node* next;//*起指示作用,说明next是一个指针,
Node(int _val){
val=_val;
next=NULL;
}
};
int main(){
/* Node node=Node(2);//定义一个node变量
Node* p=&node; //定义一个p指针,将p指针指向node变量的地址
Node p= Node(2); //定义一个p变量赋值为2
*/
Node* p=new Node(2); //定义一个p指针,new出来的是Node(2)的地址
auto q=new Node(5);
p->next=q;// 调用用->还是.取决于前面是成员变量还是指针变量,跟后面没关系
//头结点指的是链表的第一个结点的地址,而不是链表本身
Node* head=p;
while(p!=NULL){
cout<<p->val<<endl;
p=p->next;
}
return 0;
}