现在的位置: 首页 > 综合 > 正文

一段代码,一张图区别数组和指针

2018年05月19日 ⁄ 综合 ⁄ 共 413字 ⁄ 字号 评论关闭

数组和指针的讲解千篇一律,但是正在看博客的你是否真正调试观察过他们的区别? 理论不多说,建议小菜们把代码拷到编译器,仔细分析各个数值。

#include <stdio.h>


int main()
{

char * p = "abcdefgh";

char a[] = "abcdefgh";


printf("%p\n", &p[0]);

printf("%p\n", p);

printf("%p\n", &p);


printf("\n");


printf("%p\n", &a[0]);

printf("%p\n", a);

printf("%p\n", &a);

printf("%p\n", a + 1);

printf("%p\n", &a + 1);


return 0;

}


重点说明:如图,a和&a的地址居然一样!不错,a代表是a[0]即第一个元素地址,&a代表整个数组的地址;所以“a+1”的地址是a[1]的地址是"&a+1"的地址从0012FF38跳到0012FF41即刚好是数组a的大小。

抱歉!评论已关闭.