简述
代码测试地址:
- https://www.nhooo.com/tool/c/
- https://rextester.com/
- https://www.tutorialspoint.com/codingground.htm
- https://www.codechef.com/ide
#include <stdio.h>
#include <stdint.h>
#include <string.h>
static int xx[5][8] = {0};
static int *pxx[5] =
{
xx[0],
xx[1],
xx[2],
xx[3],
xx[4],
};
static int val = 0;
void cpt(int **v, int x, int y)
{
val = 0;
int *p = (int *)v;
for(int i = 0; i < x; i++)
{
for(int j = 0; j < y; j++)
{
*(p + i*y + j) = val++;
printf("add %p + %d = 0x%08x\n", p, i*y + j, p + i*y + j);
}
}
}
void cptx(int **v, int x, int y)
{
val = 0;
for(int i = 0; i < x; i++)
{
for(int j = 0; j < y; j++)
{
v[i][j] = val++;
}
}
}
int main()
{
for(int i = 0; i < 5; i++)
{
for(int x = 0; x < 8; x++)
{
xx[i][x] = val++;
printf("xx[%d][%d] = %d;\n", i, x, xx[i][x]);
}
}
printf("addr %p\n", xx);
memset(xx, 0, sizeof(xx));
cpt((int **)xx, 5, 8);
printf("\n");
for(int i = 0; i < 5; i++)
{
for(int x = 0; x < 8; x++)
{
printf("xx[%d][%d] = %d;\n", i, x, xx[i][x]);
}
}
printf("\n");
memset(xx, 0, sizeof(xx));
cptx((int **)pxx, 5, 8);
for(int i = 0; i < 5; i++)
{
for(int x = 0; x < 8; x++)
{
printf("xx[%d][%d] = %d;\n", i, x, xx[i][x]);
}
}
return 0;
}
测试输出
$gcc -o main *.c -lm
$main
xx[0][0] = 0;
xx[0][1] = 1;
xx[0][2] = 2;
xx[0][3] = 3;
xx[0][4] = 4;
xx[0][5] = 5;
xx[0][6] = 6;
xx[0][7] = 7;
xx[1][0] = 8;
xx[1][1] = 9;
xx[1][2] = 10;
xx[1][3] = 11;
xx[1][4] = 12;
xx[1][5] = 13;
xx[1][6] = 14;
xx[1][7] = 15;
xx[2][0] = 16;
xx[2][1] = 17;
xx[2][2] = 18;
xx[2][3] = 19;
xx[2][4] = 20;
xx[2][5] = 21;
xx[2][6] = 22;
xx[2][7] = 23;
xx[3][0] = 24;
xx[3][1] = 25;
xx[3][2] = 26;
xx[3][3] = 27;
xx[3][4] = 28;
xx[3][5] = 29;
xx[3][6] = 30;
xx[3][7] = 31;
xx[4][0] = 32;
xx[4][1] = 33;
xx[4][2] = 34;
xx[4][3] = 35;
xx[4][4] = 36;
xx[4][5] = 37;
xx[4][6] = 38;
xx[4][7] = 39;
addr 0x6010c0
add 0x6010c0 + 0 = 0x006010c0
add 0x6010c0 + 1 = 0x006010c4
add 0x6010c0 + 2 = 0x006010c8
add 0x6010c0 + 3 = 0x006010cc
add 0x6010c0 + 4 = 0x006010d0
add 0x6010c0 + 5 = 0x006010d4
add 0x6010c0 + 6 = 0x006010d8
add 0x6010c0 + 7 = 0x006010dc
add 0x6010c0 + 8 = 0x006010e0
add 0x6010c0 + 9 = 0x006010e4
add 0x6010c0 + 10 = 0x006010e8
add 0x6010c0 + 11 = 0x006010ec
add 0x6010c0 + 12 = 0x006010f0
add 0x6010c0 + 13 = 0x006010f4
add 0x6010c0 + 14 = 0x006010f8
add 0x6010c0 + 15 = 0x006010fc
add 0x6010c0 + 16 = 0x00601100
add 0x6010c0 + 17 = 0x00601104
add 0x6010c0 + 18 = 0x00601108
add 0x6010c0 + 19 = 0x0060110c
add 0x6010c0 + 20 = 0x00601110
add 0x6010c0 + 21 = 0x00601114
add 0x6010c0 + 22 = 0x00601118
add 0x6010c0 + 23 = 0x0060111c
add 0x6010c0 + 24 = 0x00601120
add 0x6010c0 + 25 = 0x00601124
add 0x6010c0 + 26 = 0x00601128
add 0x6010c0 + 27 = 0x0060112c
add 0x6010c0 + 28 = 0x00601130
add 0x6010c0 + 29 = 0x00601134
add 0x6010c0 + 30 = 0x00601138
add 0x6010c0 + 31 = 0x0060113c
add 0x6010c0 + 32 = 0x00601140
add 0x6010c0 + 33 = 0x00601144
add 0x6010c0 + 34 = 0x00601148
add 0x6010c0 + 35 = 0x0060114c
add 0x6010c0 + 36 = 0x00601150
add 0x6010c0 + 37 = 0x00601154
add 0x6010c0 + 38 = 0x00601158
add 0x6010c0 + 39 = 0x0060115c
xx[0][0] = 0;
xx[0][1] = 1;
xx[0][2] = 2;
xx[0][3] = 3;
xx[0][4] = 4;
xx[0][5] = 5;
xx[0][6] = 6;
xx[0][7] = 7;
xx[1][0] = 8;
xx[1][1] = 9;
xx[1][2] = 10;
xx[1][3] = 11;
xx[1][4] = 12;
xx[1][5] = 13;
xx[1][6] = 14;
xx[1][7] = 15;
xx[2][0] = 16;
xx[2][1] = 17;
xx[2][2] = 18;
xx[2][3] = 19;
xx[2][4] = 20;
xx[2][5] = 21;
xx[2][6] = 22;
xx[2][7] = 23;
xx[3][0] = 24;
xx[3][1] = 25;
xx[3][2] = 26;
xx[3][3] = 27;
xx[3][4] = 28;
xx[3][5] = 29;
xx[3][6] = 30;
xx[3][7] = 31;
xx[4][0] = 32;
xx[4][1] = 33;
xx[4][2] = 34;
xx[4][3] = 35;
xx[4][4] = 36;
xx[4][5] = 37;
xx[4][6] = 38;
xx[4][7] = 39;
xx[0][0] = 0;
xx[0][1] = 1;
xx[0][2] = 2;
xx[0][3] = 3;
xx[0][4] = 4;
xx[0][5] = 5;
xx[0][6] = 6;
xx[0][7] = 7;
xx[1][0] = 8;
xx[1][1] = 9;
xx[1][2] = 10;
xx[1][3] = 11;
xx[1][4] = 12;
xx[1][5] = 13;
xx[1][6] = 14;
xx[1][7] = 15;
xx[2][0] = 16;
xx[2][1] = 17;
xx[2][2] = 18;
xx[2][3] = 19;
xx[2][4] = 20;
xx[2][5] = 21;
xx[2][6] = 22;
xx[2][7] = 23;
xx[3][0] = 24;
xx[3][1] = 25;
xx[3][2] = 26;
xx[3][3] = 27;
xx[3][4] = 28;
xx[3][5] = 29;
xx[3][6] = 30;
xx[3][7] = 31;
xx[4][0] = 32;
xx[4][1] = 33;
xx[4][2] = 34;
xx[4][3] = 35;
xx[4][4] = 36;
xx[4][5] = 37;
xx[4][6] = 38;
xx[4][7] = 39;
|