【C语言】在虚拟世界里,编织我们的现实爱情——程序员的梦幻之旅(指针基础入门)

在实际生活中,我们可以想象一下你有一个装满礼物的宝箱,但是你不知道宝箱具体是在哪里。这时候你有一张纸条,上面写着宝箱的地址。这个地址就想是指针,它指向了实际的宝箱。通过这个地址,你就可以找到宝箱并打开它,获取里面的礼物。

文章目录

  • 前言
  • 一、内存和地址
    • 1.指针变量
    • 2.解引用操作符
    • 3.指针变量类型的意义
    • 4.指针加减整数


前言

通过生活中的例子,我们可以在编程中学习到指针的相关知识。指针是C语言中的一种数据类型,用于存储变量的地址。变量在内存中有自己的地址,指针变量则存储了该地址。


一、内存和地址

内存是计算机用于存储数据和程序的地方。每个内存单元都有一个唯一的地址,用于标识该内存单元。可以将其视为一列连续的存储单元,每个存储单元都有一个地址,可以通过这个地址访问和操作数据。

1.指针变量

指针变量存储了某个变量的地址,可以通过指针变量来访问这个变量。指针本身也在内存中有自己的地址,可以通过&运算符获取指针变量本身的地址。

int a = 5;
int* p = &a;

2.解引用操作符

解引用操作符用于访问指针所指向的变量或对象。解引用操作符使用星号(*)作为符号,放置在指针变量前面。当使用解引用操作符时,它会将指针变量指向的内存位置的值提取出来。

int i = 10;
int* p = &i;//将i的地址取出放在指针变量p里面
printf( "%d\n", *p );//通过解引用操作符可以得到i的值为10

除了用于访问指针所指向的对象的值,解引用操作符还可以用于修改指针所指向的对象的值。

int i = 10;
int *p = &i;

*p = 20;
printf("%d\n", i);  //修改后的i的值:20

 3.指针变量的大小

在C语言中,指针变量的大小在不同的系统架构上可能会有所不同。在大多数32位系统上,指针变量的大小通常为4个字节,而在64位系统上,指针变量的大小通常为8个字节。

 3.1指针变量类型的意义

指针变量的类型决定了,对指针解引⽤的时候有多大的权限(⼀次能操作几个字节)。

比如: char* 的指针解引⽤就只能访问⼀个字节,而int* 的指针的解引用就能访问四个字节

4.指针加减整数

我们可以通过指针变量类型来决定跳过几个字节

我们可以通过这个例子看出,char*类型的指针变量跳过了一个字节,int*类型的指针变量跳过了四个字节,指针的变量的类型决定了向前或向后走的步长。

二、void*指针

在C语言中,void*是一种通用指针类型,它可以指向任意类型的数据。该类型的指针可以被用于指向任何类型的对象,但不能直接用于进行间接解引用操作或进行指针的运算。

我们可以看一个例子

在上⾯的代码中,将⼀个int类型的变量的地址赋值给⼀个char*类型的指针变量。编译器给出了⼀个警告(如上图),是因为类型不兼容。而使⽤void*类型就不会有这样的问题。
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二进制浪漫诗人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值