CPP学习之——指针与类型(8.4)

一 概述

由于不同类型的变量在内存中所占用的字节不同,而指针又是用来保存内存地址的变量,因此指针只能存储与它类型相同的变量的地址

二 代码及输出

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main()
{
double a = 3.14;
int b = 6;
int *p1 = &b;
double *p2 = &a;
cout << "p1:" << p1 << endl;
cout << "p2:" << p2 << endl;
cout << endl;
p1++;
p2++;
cout << "p1:" << p1 << endl;
cout << "p2:" << p2 << endl;

return 0;
}

2.2 结果

1
2
3
4
5
p1:0x22fe34
p2:0x22fe38

p1:0x22fe38
p2:0x22fe40

2.3 代码说明

  • double a;定义了一个双精度型变量a.编译器接到此定义通知后会在内存中开辟一块内存区域。该区域的大小刚好可以存放双精度型数值。
  • int *p;定义了一个指向整型变量的指针变量p.编译器知道了指针指向的类型,才能对其进行正确的处理与运算

三 总结

  • 由于指针类型的不同决定了指针运算方式的不同,所以我们不能将一种类型的指针赋给另一种类型的指针
  • 这就是指针与变量类型的关系,指针的类型必须与它所指向的变量的类型相匹配。假如不相匹配,那么就会报错