c语言x的n次方怎么写_C语言零基础入门-指针-01

23249e7e78b8b0261ea18477965befba.png

C语言零基础入门-指针-01

本节要点:
1,什么是指针。
2,&符号的使用。

01. 什么是指针

首先,我们回顾一下我们的数据在内存中是怎么进行存放,以及怎么进行使用的。

01.1 举例说明

栗子 1

当我们定义了如下的一个变量的时候:

int i = 9;

计算机就会在内存中找一个存储位置,把数据9存放在计算机中,然后再把存放数据9的这个地址空间起一个名字叫做i。如下图:

62160538084d33667a89dd783f2db2cf.png

于是,我们便可以根据这个存放单元的名字 i 来找到这个数据 9 。

栗子 2

我们在定义一个数组的时候:

int a[5] = {1,2,3,4,5};

学数组的时候我们说过,数组在计算机内存中是连续存放的,我们访问数组的时候是使用 数组名+下标地址 进行索引的。如下图:

48c579d5c20b92f75837206f2817956d.png

01.2 结论

通过以上两个例子,我们发现:我们最初学习变量定义的方式,其实就是给存放数据的某一个单元格起了一个别名,然后我们根据别名去找到这个数据。

01.3 问题引出

这个时候我们可以提出一个问题,我们能不能不使用数据位置的别名,而是直接使用他存放位置所在的地址来处理数据呢?

这个问题可能会把大家绕迷糊,我举一个简单的例子,大家理解一下。

你出去旅游,住宾馆的时候,前台小姐姐给你了一个房卡,说你的房间是楼上的 "洱海",这个时候 "洱海" 是这个房间的名字,但是你只看名字你是不知道房间在几楼的,所以你又看了看手中的房卡,房卡显示你的"洱海"是在3017。这个时候你就知道了,名字叫做"洱海"的房间是3楼的017室,于是你就屁颠屁颠的去房间了。

在这个例子中,名字"洱海"就相当于我们数据起的别名,3017就相当于数据所在的地址。

所以,回归问题:我们可不可以直接使用地址来操作数据?

  • 答案是,当然可以。

01.4 指针的引出

我们的指针其实存放的内容就是地址。

所以在上边的例子来说:

  • 变量名就是"洱海"。
  • 指针的内容就是地址3017。
  • 数据就相当于是你。

大家应该还记得我们使用scanf来接收一个数据的时候,变量名的前边要加上取地址符&,之前我说,大家记住就好,这里我们就来讲一讲为什么要加取地址符。

  • 由于我们前边定义变量的时候直接就是给变量所在的地址取了一个别名,但是我们存放数据的时候,肯定不是把数据存放到别名里边(因为别名只是一个代号而已,他没有用来存放数据的存储空间),而是把数据存放到存储空间的某一个地址里面,由于变量名就是存储空间的一个代号(别名),所以我们把这个别名指向的地址获取到就可以了。
  • 因此使用取地址符号&来获取变量所指向的地址。
  • 如下图:

2d3e3edd154e29193c1ea708a29925e7.png

好了,到目前位置,我们已经清楚了一下几点内容:

  • 一个数据存放在内存单元中。
  • 每一个内存单元都有唯一的地址编号,然后我们的指针就是存放的这些编号。
  • 我们也会给内存单元取一个别名。
  • 然后,我们根据内存单元的别名可以使用取地址符来得到内存单元的地址。

02. &符号的使用

刚才说了可以使用&符号来得到变量的地址,我们就来使用以下吧。

#include<stdio.h>

void main(){
    int i = 10;

    printf(" i 的数据是:%dn",i);
    printf(" i 的地址是:%Xn",&i);

}

结果

02ffeccec3686c0877914218e8a8e25f.png

解释

使用 & 符号得到变量i的地址,地址输出的时候按照16进制的行视输出。由此我们可以看到,变量i指向的地址是 19FF2C,地址19FF2C这个存储单元存放的数据是10。

03. 结束

指针是C语言的精华,如果指针没弄明白,那么你的C算是白学了。

这一章的进度会很慢,大家这地吃透。

公众号:小小猿笔记

下面的连接也不知道为啥跳转不到,好气哦。

http://weixin.qq.com/r/_y9cRE3EbRASrQkn93rp (二维码自动识别)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值