C语言 指针基础

本文详细介绍了C语言中的指针基础知识,包括指针的概念、大小、解引用操作,以及指针与数组的关系。通过实例展示了如何使用指针进行内存操作,解释了指针加法和类型转换对指针行为的影响。此外,还讨论了大小端存储模式及其判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是指针?

  我们在定义变量时,系统会给这个变量分配内存单元,编译系统会根据程序中定义的数据类型,分配一定长度的内存空间,内存区的每一个字节都有一个编号,这编号就是内存单元的“地址”,它相当于宿舍楼里面的房间号。在地址所标志的内存单元中存放数据,就相当于这个宿舍里面的同学一样。

  通过地址能找到所需的变量单元,也可以说,地址指向该变量单元。因此,我们将地址形象化称之为“指针”。意思就是通过它可以找到以它为地址的内存单元。

现假设我们定义了一个用来存放地址的变量p,可以通过下面的语句将a的地址存放到p中。

p = &a;

这时,变量p中存放了变量a的地址,假设该地址为2022,如果要存取a的值,可以采用间接方式:先找到存放a的地址的变量p,从中取得a的地址,然后到该地址的内存单元中取得a的值。

               

                      

所谓指向就是通过地址来体现的。

一个变量的地址就成为该变量的“指针”。例如,地址2022是变量a的指针。p变量是专门存放a变量的地址,则称p为“指针变量”,指针变量就是存放地址的变量,指针变量的值就是指针。

 为了更好的理解,我们举一个例子,通过指针变量来访问整型变量。

#include<stdio.h>
int main()
{
   int a = 10;
   int b = 20; //定义两个int型变量a、b
   int *p;
   int *q;     //定义两个int型指针变量
   p = &a;     //把变量a的地址赋给指针变量p
   q = &b;     //把变量b的地址赋给指针变量q
   printf("a = %d,b = %d\n", a, b); //输出a、b
   printf("*p = %d,*q = %d", *p, *q); //输出指针变量所指向的整型变量的值
   return 0;
}

运行结果:

a = 10,b = 20
*p = 10,*q = 20

程序分析见备注,不再赘述。

2.指针的大小

 探讨指针的大小,我们以上图为例。

#include<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值