指针和引用、链表

类、结构体、指针和引用

指针

#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;
}
posted @ 2022-03-12 16:45  迟意  阅读(47)  评论(0)    收藏  举报