难易度:简单
备考建议指针是无法在复赛考察的,所以在初赛考察的可能性大,大家平常写题目又不用,所以在初赛备考时应该引起重视。
结合2023新修订的考试大纲。除了指针本身的概念,涉及到指针的知识点共有3个:
1.基于指针的数组元素访问 2.字符指针 3.指向结构体的指针
什么是指针
指针是一种数据类型,专门存放地址。指针变量在64位系统中占八个字节,在32位系统中占四个字节。
一个内存单元的位置叫做内存单元的地址,通常用取地址符 &
表示,scanf
中&a
表示将键盘输入的内容存放到变量a
的地址中。
指针变量的声明
指针变量声明的一般形式为:
type *pointer-name
例如: int *ptr
,声明了一个整型的指针变量ptr
。这意味着当执行ptr++
操作时,指针的地址会自动加4,原来整型指针加1时会指向下一个int
(整数)。
指针变量的初始化
指针变量一旦存在,必须进行初始化,就像main
函数里的整型变量,不赋初值就会是一个随机数一样,指针变量不赋初值就会成为“野指针”, 把整个程序搞崩溃!!!如果没什么特定的位置那么就给指针赋为空, 即prt = NULL
。
通常指针变量的初始化也可以和声明合并,如下:
double num = 3;
double *pNum = #
指针变量的赋值
对于两个指针变量 ptr1
和 ptr2
, 执行ptr2 = ptr1
, 表示ptr1
和ptr2
指向同样的地址,也就是说,两个指针指向同一个内存单元,对ptr2
的任何改动都会影响ptr1
的值,反之亦然。
需要注意的是, cout << *ptr
输出的是指针ptr
指向的内存单元中的数值而非内存单元的地址。