(C语言)数组与指针的区别

以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解。刚刚在李云的《专业嵌入式软件开发》中,看了讲述数组与指针区别的一章,似乎有所领悟。本着知乎上看到的这张图,我试着将自己的理解写一些。

6f1b34a24141696a2b063fafee577420_r首先需要了解数组和指针的工作模式。

数组:

char name[] = {‘T’, ‘o’, ‘n’, ‘y’, ‘\0’};

此时,这个数组的地址是这样的。其中name指向数组的开头:

QQ截图20150418172802

指针:

char name[] = {‘T’, ‘o’, ‘n’, ‘y’, ‘\0’};
char * p_name = name;

在C语言中,指针占4个字节,正好能存一个地址。现在,p_name里存的内容里就是name(起始的)的地址。

QQ截图20150418173242

以上就是数组和指针工作模式上的区别,接下来看他们在什么情况下会不一样。

(回头更新)