指针的基本概念
我们平时定义的变量最终都会保存在内存里,内存的最小存储单位称为内存单元。通常,一个字节称为一个内存单元。而我们定义的变量就保存在这些内存单元里,为了正确地访问这些数据,必须为每个内存单元都编上编号,每个内存单元的编号是唯一的,就像每个人都有唯一的身份证号,只要知道身份证号就能找到这个人。同样,根据内存单元编号就可以准确地找到保存在该内存单元中的数据。内存单元的编号也就是地址。
下图是 4G 内存中每个字节的编号:
看一段程序:
#include <stdio.h>
int main(void)
{
int a = 1;
printf("\na的地址%#x\n", &a);
return 0;
}
输出
a的地址0x61ff0c
a是一个int型变量,其的值1保存在地址0~0xFFFFFFFF之间的编号为0x61ff0c的地址上。
指针是一种特殊的数据类型,用指针声明的变量称为指针变量。 指针变量的值实际上是一个地址。
一、指针变量的声明与初始化举例:
1、在声明时赋值
int a;
int *p=&a; //初始化赋值,&a表示取变量a的首地址
2、动态赋值
int a;
int *p;
p=&a; //利用&a获得变量a的首地址,然后赋值给p
二、注意区分的两个概念:指针的类型与指针所指的类型
1、指针的类型
(1)int*ptr;//指针的类型是int*
(2)char*ptr;//指针的类型是char*
(3)int**ptr;//指针的类型是int**
从语法的角度看,只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。
2、指针所指的类型
(1)int*ptr;//指针所指向的类型是int
(2)char*ptr;//指针所指向的的类型是char
(3)int**ptr;//指针所指向的的类型是int*
从语法的角度看,只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
以上就是指针的基本概念,关键理解指针的类型与指针所指向的类型。
【每日一句】
生活,有时候就是这样,难免充满各种惊喜、惊吓和无奈,可是只要你不放弃它,它就不会放弃你。
我是肥胖的正念君
觉得正念君很胖的话
记得分享给你的同学与朋友哦
↓ ↓ ↓ ↓ ↓ ↓