C语言 | 指针的基本概念

1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

我们平时定义的变量最终都会保存在内存里,内存的最小存储单位称为内存单元。通常,一个字节称为一个内存单元。而我们定义的变量就保存在这些内存单元里,为了正确地访问这些数据,必须为每个内存单元都编上编号,每个内存单元的编号是唯一的,就像每个人都有唯一的身份证号,只要知道身份证号就能找到这个人。同样,根据内存单元编号就可以准确地找到保存在该内存单元中的数据。内存单元的编号也就是地址

下图是 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*

从语法的角度看,只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型

以上就是指针的基本概念,关键理解指针的类型指针所指向的类型

1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式大杂烩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值