请教:二级指针怎么和一个二维数组关联起来
二级指针怎么和一个二维数组关联起来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; }