有人可以解释为什么该程序将“ v”打印为输出吗?我知道该代码的注释部分用于访问第二个字符串的第三个字符,但是第一个字符如何工作?
#include<stdio.h> int main(void) { static char a[3][5] = {"axcd", "efgh","ijkl"}; putchar (*(*a+1)-2); // putchar (*(*(a+1))+2); }
答案 0 :(得分:0)
通常,您应该使用双括号来初始化2D数组,即
static char arr[2][3] = {{"a","b","c"},{"e","f","g"}};
要访问例如第二行和第三列中的“ g”,我们使用:
*(arr + (1 * 3 + 2));
'arr'是存储阵列的内存中的地址。 “ 1”是所需行的索引,“ 3”是每行的长度(==列数)。 “ 2”是我们想要的适当行中元素的索引。
通常情况下,要在第i行和第j列中获取元素,我们使用:
int arr[N][M], i, j;
... //set values for i, j..
*(arr + (i*M + j));