C指针和数组的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kl1125290220/article/details/45533775

对于指针和数组的问题已经困扰我许久。今天在打代码的时候,用到了很多指针和数组的问题。
当初在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。
第一次写技术方面的文章。语意不顺之处请见谅。 本人对指针的也是出于模糊之间,若观点有错,请大神们指出,让小弟改正过来。

猜你喜欢

转载自blog.csdn.net/kl1125290220/article/details/45533775
今日推荐