您的位置:首页 > 编程语言 > C语言/C++

C语言 - 指针数组 多级指针 二维数组 实例讲解

2013-11-11 21:57 337 查看
题目:设有下面的变量定义
int v[4][6], *p[4], **q;
int j;
且设已执行了下面的语句:
for(j=0; j<4; j++)
p[j]=v[j];
q = p;
请分别指出下面的每句语句使哪个变量的值增加了1
(1)    (*p[3])++
(2)    q[3][0]++
(3)    p[3][0]++

#include <stdio.h>
#include <stdlib.h>

void main()
{
int v[4][6] = {
{00, 01, 02, 03, 04, 05},
{10, 11, 12, 13, 14, 15},
{20, 21, 22, 23, 24, 25},
{30, 31, 32, 33, 34, 35}
};
int *p[4], **q;
int j;

for(j=0; j<4; ++j)
{
p[j] = v[j];
/*
p[0] = v[0][];
p[1] = v[1][];
p[2] = v[2][];
p[3] = v[3][];
*/
}

q = p;				// p == &p[0] == &v[0][]    q == &v[0][]

printf("%d %d %d\n", (*p[3])++, q[3][0]++, p[3][0]++);		// 这里的 q[3][0]++ 与 p[3][0]++ 是与自增有关系, 其实最后输出的就是 q[3][0], p[3][0] 这两个值
printf("%d %d\n", q[3][0], p[3][0]);						// 这里的 q[3][0] 与 p[3][0] 才是上面一行自增后的 值
printf("%d %d", q[3][0]++, p[3][0]++);						// 这一句就充分证明了 自增带来的结果

printf("\n");
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 王吉平
相关文章推荐