打印二维数组元素地址与值
本程序使用C语言演示如何访问和打印二维数组中元素的地址和值。
#define FORMAT "%p,%d " // 使用%p打印地址
int main() {
int a[3][4] = {
{1, 3, 5, 7},
{9, 11, 13, 15},
{17, 19, 21, 23}
};
// 打印数组名、首地址及首元素值
printf(FORMAT, a, *a);
printf(FORMAT, a[0], *(a + 0));
printf(FORMAT, &a[0], &a[0]);
// 打印第二行首地址及首元素值
printf(FORMAT, a[1], a + 1);
printf(FORMAT, &a[1][0], *(a + 1) + 0);
// 打印第三行首地址及首元素值
printf(FORMAT, a[2], *(a + 2));
printf(FORMAT, &a[2], a + 2);
// 打印第二行首元素地址及值
printf(FORMAT, &a[1][0], *(*(a + 1) + 0));
return 0; // 添加return语句
}
运行结果示例: (假设系统给数组 a
分配的首地址为 0x7ffe00 )
0x7ffe00,1 0x7ffe00,1 0x7ffe00,0x7ffe00 0x7ffe10,9 0x7ffe10,9 0x7ffe20,17 0x7ffe20,17 0x7ffe10,9
结果分析:
- 数组名
a
代表数组首地址,与a[0]
、&a[0]
相同。 a + i
表示第i
行首地址。*(a + i) + j
表示第i
行第j
列元素地址。*(*(a + i) + j)
表示第i
行第j
列元素值。
注意: 程序中使用了 %p
格式化输出地址,实际地址值可能因系统和编译器而异。
暂无评论