指针就是地址

[指针] [c++]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<bits/stdc++.h>
using namespace std;

int main()
{
int a=10;
int *p; //定义指针
p=&a; //让指针记录变量a的地址 等于是取a的地址赋给p

//使用指针
*p=1000; //非定义时*表示解引用 找到指针指向的内存的数据
cout<<"*p="<<*p<<endl;
cout<<"a="<<a<<endl; //此时均改为了1000

//空指针 用于给指针变量进行初始化 不可以访问
int *p1=NULL;

//野指针 指针变量指向非法空间 必须避免
int *p2=(int *)0x1100;

//常量指针 const修饰指针 指针指向的值不可以改
const int *p2=&a;

//指针常量 const跟在常量前 修饰常量 指针指向不可以改
int * const p3=&a;

//均不可以改
const int * const p4=&a;

//指针与数组
int arr[10]={1,2,3,4,5,6,7,8,9,10} ;
int *p3=arr; //arr就是数组首地址
p3++; //指针向后偏移四个字节


}

void swap1(int *p1,int *p2) //利用指针做函数参数可以修改实参的值
{
int t=*p1;
*p1=*p2;
*p2=t;
}


[结构体] [c++]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<bits/stdc++.h>
using namespace std;


struct Student//创建学生数据类型 学生姓名年龄分数
{
string name;//成员列表(属性)
int age;
int score;
} ;

int main()
{
//三种创建方式

//1
struct Student s1;
s1.name="张三";

//2
struct Student s2={"李四",10,11};

//3 struct Student 后面直接创建

//创建结构体数组
struct Student arr[2]=
{
{"张三",19,100},
{"李四",18,22};
}

//赋值
arr[1].name="王五";
//遍历结构数组
for(int i=0;i<2;i++) cout<<arr[i].name<<" ";


struct Student s2={"赵五",18,100};

//指针指向结构体变量
student *p4 = &s2;

//指针访问结构体变量中数据
cout<<p4->name<<endl;

}