指针:
1.指针的概念:
内存区的每一个字节有一个编号,这就是 ‘地址’,由于通过地址能找到所需的变量单元,而地址指向该变量单元,所以将地址形象化称为 ‘指针’。C/C++中是可多继承的指针,而Java中是单继承指针。
2.为什么要用指针?
解决跨区域(不同作用域,不同代码块)之间的数据交互。
3.指针变量:
如果有一个变量专门用来存放另一变量的地址(即指针),则它称为 ‘指针变量’。指针变量的值是地址(即指针)。指针变量本身在内存里面占据8个字节。
注意⚠️:指针是一个地址,而指针变量是存放地址的变量。
4.怎样定义和使用指针变量:
“&” :取地址运算符。&a 是变量a的地址。
“” :指针运算符(或称‘间接访问’ 运算符),p代表指针变量p指向的对象
(1)定义指针变量的一般形式为:
类型名 * 指针变量名;
eg: int *point_1, *point_2;
注意⚠️:定义指针变量时必须指定基类型。可以在定义指针变量时同时对它初始化
(2)一个变量的指针的含义包括两个方面:
一是以存储单元编号表示的纯地址(如编号为2000的字节);一是它指向的存储单元的数据类型(如 int,char,float等)。
注意⚠️:指针变量中只能存放地址(指针),不能将一个整数赋给一个指针变量。地址只能用地址符 “&” 得到并赋给一个指针变量。
eg:
float b =20;
int c = 10;
int *a=b;❌ 指针变量只能存地址,不能存具体值
int *a=&b;❌整型指针只能存整形数据的地址
int *a = &c;✔️
float *d = NULL;NULL指向内存的起始地址 0x00
(3)数组和指针的关系:
数组名并不是一个变量 ,没有分配内存空间。 而指针变量有内存空间。
(4)指针实际使用:
a. 定义一个数组,系统会为其分配内存空间,可以存值
int num[10]={0};
b. 定义一个指针变量,系统只为变量本身分配8个字节内存空间,但无法存值,因为系统没有为其分配可赋值的内存空间
int *p;
c. 如果想给指针指向的区域赋值
//1.指针变量已经指向某块区域
Xnip