蒜头君任务系统C语言,C语言修行区

阿涛不吃辣 1141407586 发表了文章 • 3 个评论 • 283 次浏览 • 2018-08-07 16:04

• 来自相关话题

我是一名完全完全编程零基础的人,到现在还是个菜鸟。

摘抄一段C Primer Plus的内容:

指针(pointer)

指针?什么是指针?从根本上看,指针是一个值为内存地址的变量(或数据对象)。正如char类型变量的值是字符,int类型的值是整数,指针变量的值是地址。

好了,这样看来指针就是一个变量,不过这个变量的类型比较特殊,是地址。那么我们怎么理解这个值为地址的变量呢?我来说说我的理解!

$(document).ready(function() {$('pre code').each(function(i, block) { hljs.highlightBlock( block); }); });#include

int main(){

int number = 1;

int * ptr_number = NULL;

ptr_number = &number;

printf("int类型的number的值是 %d,他在内存中的地址是 %x\n", number, &number);

printf("指针ptr_number指向的地址是%p,该地址的值是%d",ptr_number,*ptr_number);

return 0;

}就这,我在云课堂看蒜头老师讲的时候也能理解,但是始终是记不住,苦思冥想到底应该怎么去理解这个指针才能更加的牢固呢?

很长一段时间我都对指针很恐惧。直到有一天我打开书,希望在书中寻找答案时。我发现了牢记指针的方法。要不说“书中自有黄金屋,书中自有颜如玉”呢!

我是一个不是经常看书的人。一般打开书我都是带着疑问去看的,所以我打开我的书本,在目录中寻找有关于指针的介绍,很快我就找到了,C Primer Plus(第六版)的269页就是指针的介绍。就在这时,我脑海里就在想“为什么我看到目录就知道指针介绍在那一页?”

因为上面写了嘛,指针简介 ------------ 269,对呀指针何尝不是类似目录这样的呢?把一本书想象成全部的内存空间。书里有页码、有书页,书页上有字。

没错,我们可以进行这样的联想,现在有一本书(相当于一块内存),我们先 int i = 6,这个操作可以暂时看做我们闭着眼睛随意的打开了一页书,在书上写上了大大的 i 并在他下面写了一个 6 (6是铅笔写的,能改) ,不管你在那一页写的这个 6 ,肯定是有对应的页码的没错吧,那这个页码我们就说成是变量 i 在内存里的地址。假设是第1321页(是假设),如果我们先看看这个闭着眼翻开的是第几页怎么做呢?这时候就要用到 & 符号了,这个符号就是用来取地址的(你要看页码那不就是取地址嘛)。

地址运算符: &

一般注解:

后跟一个变量名时,&给出该变量的地址。

示例:

&num 表示变量 num 的地址

那么取谁的地址呢,肯定是 i 呀(哎呀?哎啊?),&i 这个意思就是我要你的地址(霸不霸气?)这样我们就能找到 i 所在的地方了。说了一大堆,还是没讲指针啊!是啊,那我们再来 int * ptr_i = &i (int是我要指向的变量的类型,可以说是指瘦的人就用瘦纸,指胖的人就就用胖纸,哈哈!)

地址运算符: *

一般注解:

后跟一个指针名或地址是,*给出储存在指针指向地址上的值

示例:

num = 22;

ptr = #  //指向 num 的指针

ab = *ptr;  //把 ptr 指向的地址上的值赋给ab

最后就是把 22 赋值给了 ab。

这个ptr_i是什么?是我给他取的名字啦,你也可以取其他的名字。再来说说=号后面发生了什么。这一步操作我理解为,还是先闭上眼,翻开任意一页,写上一个大大的ptr_i,然后重点来了,接下来我们睁开眼找到 i 的地址或者理解成 i 的页码(&i 不就是要了 i 的地址来嘛),把他写在了ptr_i下(1321,这是假设的哟)。好了这一步我们就干了这些事!

咱们在来说说这个 ptr_i 。这个上面咱们已经说了,是一个指针。这个变量啊,他只放内存地址,别的一概不能放(不信你自己放放看,编译器都看不下去),而且这个内存地址一定要是取来的。

最后再啰嗦几句,指针也是有地址的,就像是你在把任意一页写成指针类型然后他指向某个值,这个任意一页也是有页码的,所以说如果想通过指针的地址来访问原指针指向的空间的时候,就应该在定义的时候 **ptr_ 就是多加一个地址运算符,说明这是一个指向指针的指针。访问时也需要两个 ** 。再多一句嘴,指向指针的指针也是有地址的,指几次就加几个 * 号运算符,注意,访问原指针指向空间时,定义时有几个 * 号运算符写几个!

以上纯属个人理解,写这个也是为了加深自己对C语言指针的理解。还请各位老师多多指正!手动@蒜头徐老师@老九学堂老师@老九君​ 查看全部

我是一名完全完全编程零基础的人,到现在还是个菜鸟。

摘抄一段C Primer Plus的内容:

指针(pointer)

指针?什么是指针?从根本上看,指针是一个值为内存地址的变量(或数据对象)。正如char类型变量的值是字符,int类型的值是整数,指针变量的值是地址。

好了,这样看来指针就是一个变量,不过这个变量的类型比较特殊,是地址。那么我们怎么理解这个值为地址的变量呢?我来说说我的理解!

#include

int main(){

int number = 1;

int * ptr_number = NULL;

ptr_number = &number;

printf("int类型的number的值是 %d,他在内存中的地址是 %x\n", number, &number);

printf("指针ptr_number指向的地址是%p,该地址的值是%d",ptr_number,*ptr_number);

return 0;

}就这,我在云课堂看蒜头老师讲的时候也能理解,但是始终是记不住,苦思冥想到底应该怎么去理解这个指针才能更加的牢固呢?

很长一段时间我都对指针很恐惧。直到有一天我打开书,希望在书中寻找答案时。我发现了牢记指针的方法。要不说“书中自有黄金屋,书中自有颜如玉”呢!

我是一个不是经常看书的人。一般打开书我都是带着疑问去看的,所以我打开我的书本,在目录中寻找有关于指针的介绍,很快我就找到了,C Primer Plus(第六版)的269页就是指针的介绍。就在这时,我脑海里就在想“为什么我看到目录就知道指针介绍在那一页?”

因为上面写了嘛,指针简介 ------------ 269,对呀指针何尝不是类似目录这样的呢?把一本书想象成全部的内存空间。书里有页码、有书页,书页上有字。

没错,我们可以进行这样的联想,现在有一本书(相当于一块内存),我们先 int i = 6,这个操作可以暂时看做我们闭着眼睛随意的打开了一页书,在书上写上了大大的 i 并在他下面写了一个 6 (6是铅笔写的,能改) ,不管你在那一页写的这个 6 ,肯定是有对应的页码的没错吧,那这个页码我们就说成是变量 i 在内存里的地址。假设是第1321页(是假设),如果我们先看看这个闭着眼翻开的是第几页怎么做呢?这时候就要用到 & 符号了,这个符号就是用来取地址的(你要看页码那不就是取地址嘛)。

地址运算符: &

一般注解:

后跟一个变量名时,&给出该变量的地址。

示例:

&num 表示变量 num 的地址

那么取谁的地址呢,肯定是 i 呀(哎呀?哎啊?),&i 这个意思就是我要你的地址(霸不霸气?)这样我们就能找到 i 所在的地方了。说了一大堆,还是没讲指针啊!是啊,那我们再来 int * ptr_i = &i (int是我要指向的变量的类型,可以说是指瘦的人就用瘦纸,指胖的人就就用胖纸,哈哈!)

地址运算符: *

一般注解:

后跟一个指针名或地址是,*给出储存在指针指向地址上的值

示例:

num = 22;

ptr = #  //指向 num 的指针

ab = *ptr;  //把 ptr 指向的地址上的值赋给ab

最后就是把 22 赋值给了 ab。

这个ptr_i是什么?是我给他取的名字啦,你也可以取其他的名字。再来说说=号后面发生了什么。这一步操作我理解为,还是先闭上眼,翻开任意一页,写上一个大大的ptr_i,然后重点来了,接下来我们睁开眼找到 i 的地址或者理解成 i 的页码(&i 不就是要了 i 的地址来嘛),把他写在了ptr_i下(1321,这是假设的哟)。好了这一步我们就干了这些事!

咱们在来说说这个 ptr_i 。这个上面咱们已经说了,是一个指针。这个变量啊,他只放内存地址,别的一概不能放(不信你自己放放看,编译器都看不下去),而且这个内存地址一定要是取来的。

最后再啰嗦几句,指针也是有地址的,就像是你在把任意一页写成指针类型然后他指向某个值,这个任意一页也是有页码的,所以说如果想通过指针的地址来访问原指针指向的空间的时候,就应该在定义的时候 **ptr_ 就是多加一个地址运算符,说明这是一个指向指针的指针。访问时也需要两个 ** 。再多一句嘴,指向指针的指针也是有地址的,指几次就加几个 * 号运算符,注意,访问原指针指向空间时,定义时有几个 * 号运算符写几个!

以上纯属个人理解,写这个也是为了加深自己对C语言指针的理解。还请各位老师多多指正!手动@蒜头徐老师@老九学堂老师@老九君​

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值