请教:二级指针怎么和一个二维数组关联起来
二级指针怎么和一个二维数组关联起来char a[x][y];
用数组名:第i行 第j列
可以表示为 *(a+i)+j
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char arr[3][4];
char **ar = (char**)arr;
int i, j;
int col = 0;
int row = 0;
printf("ar = 0x%x\n", ar);
arr[0][0]='a';
arr[0][1]='b';
arr[0][2]='c';
arr[0][3]='\0';
arr[1][0]='d';
arr[1][1]='e';
arr[1][2]='f';
arr[1][3]='\0';
arr[2][0]='g';
arr[2][1]='h';
arr[2][2]='i';
arr[2][3]='\0';
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("arr[%d][%d] = 0x%x\n", i, j, &arr[i][j]);
}
printf("\n");
}
row = 1;
col = 1;
printf ("sizeof(char) = %d\n", sizeof(char));
printf("Addr = 0x%x.\n", ((char*)ar + 4 * row + col));
printf("*ar => %c\n", *((char*)ar + 4 * row + col));
//putchar(*((*ar + sizeof(char) * 1) +1));
return 0;
}
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char **arr = (char**)malloc(sizeof(char*) * 3);
char **ar = arr;
int i, j;
for(i = 0; i < 3; ++i) {
arr[i] = (char*)malloc(sizeof(char) * 4);
}
arr[0][0]='a';
arr[0][1]='b';
arr[0][2]='c';
arr[0][3]='\0';
arr[1][0]='d';
arr[1][1]='e';
arr[1][2]='f';
arr[1][3]='\0';
arr[2][0]='g';
arr[2][1]='h';
arr[2][2]='i';
arr[2][3]='\0';
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("arr[%d][%d] = 0x%x\n", i, j, &arr[i][j]);
}
printf("\n");
}
putchar(*(*(ar+1)+1));
// Remember free!
for(i = 0; i < 3; ++i) {
free(arr[i]);
}
free(arr);
return 0;
}
