Welcome

首页 / 软件开发 / C语言 / 学点C语言(22):数据类型 - 多维数组与指针

学点C语言(22):数据类型 - 多维数组与指针2010-04-30 博客园 万一1. 关于数组的首地址:

#include <stdio.h>
int main(void)
{
char cs[2][3] = {
{"A","B","C"},
{"D","E","F"}
};
char *p1,*p2,*p3,*p4;
p1 = p2 = p3 = p4 = NULL;
/* 下面四个指针都是指向了同一个地址 */
p1 = &cs[0][0]; /* 这个最好理解 */
p2 = &cs[0];
p3 = &cs;
p4 = cs;/* 这个最方便 */
printf("%p %p %p %p ", p1, p2, p3, p4);/* 显示地址 */
printf(" %c %c %c %c ", *p1, *p2, *p3, *p4); /* 显示内容 */
getchar();
return 0;
}
2. 数组其他元素的地址:

例子中,数组的元素在内存中应该是这样排列的:

[0][0] [0][1] [0][2] [1][0] [1][1] [1][2]

下面是通过指针的方式获取数组的第三个元素:

#include <stdio.h>

int main(void)
{
int nums[2][3] = {
{11,12,13},
{21,22,23}
};
int *p1,*p2;
p1 = p2 = NULL;

p1 = &nums[0][2];

p2 = nums;
p2 = p2 + 2;
// p2 = (int *)nums + 2; /* 或者用这一句替换上面两行 */

printf("%d,%d ",*p1,*p2);

getchar();
return 0;
}