C指针和数组的区别

对于指针和数组的问题已经困扰我许久。今天在打代码的时候,用到了很多指针和数组的问题。
当初在C与指针中看到,数组可以跟操作指针一样。
例如:
char buffer[1024];
char *p; //一个指向字符串的指针

p = buffer; // buffer 等价于一个指针,我们将其赋值给指针变量是没有问题的。
            //也可以类似于p = &buffer[0]; 这样同样是指向buffer字符串
(++p) 等价于 buffer[1]吗  答案是正确的 !!!
我们是不是可以感觉到 脚标的引用是不是等于指针变量的变化 buffer[0] = *(p+0)
只是脚标的引用还把那个地址所指向的值给取出来。

然后又有一个问题就是:

**buffer[1] 等价于 buffer++** ? ; 答案是错误的。!!!
这也就我这篇文章的重点。 没错 数组名是一个指针型数据。
可是数据分为两种 常量和变量。
什么是常量? 1 就是int型的常量。 1能自增,然后存在自己身上吗? 不能。
显而易见 1 = 1+1?  无论从数学角度还是计算机的角度来看。 这都是不成立的 !

所以我们能够明白 为什么buffer 不能够自增,而p 却可以,P是我们自己定义的,来存放指针的指针变量,他的值是可以变的。 Buffer 更像是一个地址一个一串数字的地址,(0xff222122)一个指向一个地址的数字。它不需要一个变量,一个东西来指向他,就像数字 1 。我们每次用1的时候我么都是直接 打1。 1就是常量。

我们记住一个重点就可以,我们也不必被搞混。

数组是指针类型的。 只是他是一个指针常量。
指针(我们经常用的指针变量)也是指针类型,这点毋庸置疑。只是他是一个指针变量。

通俗的来说。
指针变量 p 。 就是这个p 指向一个地址,通过P 我们就能够访问到这个地址里面数据。
指针常量 buffer 他本是就是一个地址。 我们可以把buffer 赋值给 p 就像 int I = 1;
把一赋值给i。
第一次写技术方面的文章。语意不顺之处请见谅。 本人对指针的也是出于模糊之间,若观点有错,请大神们指出,让小弟改正过来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值