指针与多维数组深度剖析
2014-08-20 11:54
204 查看
源码
[root@luozhonghua ch10]# cat zippo11.c
/* zippo1.c -- zippo info */
#include <stdio.h>
int main(void)
{
int b[3]={100,200,300}; int *p;p=b;
printf("b=%p,*b=%d,p=%p,*p=%d,p+1=%p,*p+1=%d \n",b,*b,p,*p,p+1,*p+1);
printf("---------------------------\n");
int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5, 7} };
printf(" zippo = %p, zippo + 1 = %p\n",
zippo, zippo + 1);
printf("zippo[0] = %p, zippo[0] + 1 = %p\n",
zippo[0], zippo[0] + 1);
printf(" *zippo = %p, *zippo + 1 = %p\n",
*zippo, *zippo + 1);
printf("zippo[0][0] = %d\n", zippo[0][0]);
printf(" *zippo[0] = %d\n", *zippo[0]);
printf(" **zippo = %d\n", **zippo);
printf(" zippo[2][1] = %d\n", zippo[2][1]);
printf("*(*(zippo+2)) = %d\n", *(*(zippo+2)));
printf("*(*(zippo+2) + 1) = %d\n", *(*(zippo+2) + 1));
printf("---------------------------\n");
printf("*(*(zippo+1)) = %d\n", *(*(zippo+1)));
printf("*(*(zippo+1) + 1) = %d\n", *(*(zippo+1) + 1));
printf("*(*(zippo)) = %d\n", *(*(zippo)));
printf("*(*(zippo)+1) = %d\n", *(*(zippo)+1));
return 0;
}
结果:
[root@luozhonghua ch10]# ./zippo11
b=0xbfda6dd0,*b=100,p=0xbfda6dd0,*p=100,p+1=0xbfda6dd4,*p+1=101
---------------------------
zippo = 0xbfda6db0, zippo + 1 = 0xbfda6db8
zippo[0] = 0xbfda6db0, zippo[0] + 1 = 0xbfda6db4
*zippo = 0xbfda6db0, *zippo + 1 = 0xbfda6db4
zippo[0][0] = 2
*zippo[0] = 2
**zippo = 2
zippo[2][1] = 3
*(*(zippo+2)) = 1
*(*(zippo+2) + 1) = 3
---------------------------
*(*(zippo+1)) = 6
*(*(zippo+1) + 1) = 8
*(*(zippo)) = 2
*(*(zippo)+1) = 4
[root@luozhonghua ch10]# cat zippo11.c
/* zippo1.c -- zippo info */
#include <stdio.h>
int main(void)
{
int b[3]={100,200,300}; int *p;p=b;
printf("b=%p,*b=%d,p=%p,*p=%d,p+1=%p,*p+1=%d \n",b,*b,p,*p,p+1,*p+1);
printf("---------------------------\n");
int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5, 7} };
printf(" zippo = %p, zippo + 1 = %p\n",
zippo, zippo + 1);
printf("zippo[0] = %p, zippo[0] + 1 = %p\n",
zippo[0], zippo[0] + 1);
printf(" *zippo = %p, *zippo + 1 = %p\n",
*zippo, *zippo + 1);
printf("zippo[0][0] = %d\n", zippo[0][0]);
printf(" *zippo[0] = %d\n", *zippo[0]);
printf(" **zippo = %d\n", **zippo);
printf(" zippo[2][1] = %d\n", zippo[2][1]);
printf("*(*(zippo+2)) = %d\n", *(*(zippo+2)));
printf("*(*(zippo+2) + 1) = %d\n", *(*(zippo+2) + 1));
printf("---------------------------\n");
printf("*(*(zippo+1)) = %d\n", *(*(zippo+1)));
printf("*(*(zippo+1) + 1) = %d\n", *(*(zippo+1) + 1));
printf("*(*(zippo)) = %d\n", *(*(zippo)));
printf("*(*(zippo)+1) = %d\n", *(*(zippo)+1));
return 0;
}
结果:
[root@luozhonghua ch10]# ./zippo11
b=0xbfda6dd0,*b=100,p=0xbfda6dd0,*p=100,p+1=0xbfda6dd4,*p+1=101
---------------------------
zippo = 0xbfda6db0, zippo + 1 = 0xbfda6db8
zippo[0] = 0xbfda6db0, zippo[0] + 1 = 0xbfda6db4
*zippo = 0xbfda6db0, *zippo + 1 = 0xbfda6db4
zippo[0][0] = 2
*zippo[0] = 2
**zippo = 2
zippo[2][1] = 3
*(*(zippo+2)) = 1
*(*(zippo+2) + 1) = 3
---------------------------
*(*(zippo+1)) = 6
*(*(zippo+1) + 1) = 8
*(*(zippo)) = 2
*(*(zippo)+1) = 4
相关文章推荐
- C语言深度剖析-----多维数组和多维指针
- C语言深度剖析-----数组与指针分析
- C语言深度剖析笔记(指针和数组)
- C语言深度剖析-----数组参数和指针参数分析
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 《C专家编程》:深度剖析数组与指针(七)
- C语言深度剖析学习笔记-指针、数组、内存、函数
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 深度剖析指针和数组的关系
- C语言深度剖析-----指针数组和数组指针的分析
- <<C语言深度剖析>>学习笔记之五:指针与数组
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 学点 C 语言(22): 数据类型 - 多维数组与指针
- 关于用二维数组调用函数的寻址(多维数组和指针)
- 第一章 数组与指针概念剖析
- C深度剖析,指针大小,迷惑死你
- 多维数组与指针运用详解
- 数组深度剖析
- 指针和多维数组
- 指向多维数组的指针