数组上的双指针和指向表的表的元素

时间:2018-06-15 11:57:10

标签: c arrays pointers

我想知道:

  • 如何将表的元素指向元素数组?
  • 如何进行操作?

这是我写的代码:

#include <stdio.h>
#include <stdlib.h>
#define N 4

int main(int argc, char const *argv[]) {
    int i;
    int *t[N];
    int tab1[N] = {1, 2, 3, 4},
        tab2[N] = {5, 6, 7, 8},
        tab3[N] = {9, 10,11, 12},
        tab4[N] = {13, 14, 15, 16};

    for (i = 0 ; i < N; i++) {
        *t[i] = tab1[i]; 
    }

    for (i = 0; i < N; i++) {
        printf("%d\n", *t[0]);
    }
}

当我跑步时,什么也没发生。

fogang@les-tatates:~/tp_304$ gcc -o test test.c
fogang@les-tatates:~/tp_304$ test
fogang@les-tatates:~/tp_304$ 

i want to implement this !

3 个答案:

答案 0 :(得分:1)

  

当我跑步时,什么也没发生。

fogang@les-tatates:~/tp_304$ gcc -o test test.c
fogang@les-tatates:~/tp_304$ test
fogang@les-tatates:~/tp_304$ 

test is a shell build-in

要运行位于当前工作目录内的名为test的程序,请执行以下操作:

fogang@les-tatates:~/tp_304$ ./test

答案 1 :(得分:0)

根据您发布的各种评论,我猜(我真的在这里猜测)您可能想要这样:

#include <stdio.h>
#include <stdlib.h>
#define N 4

int main(int argc, char const *argv[]) {
  int *t[N];
  int tab1[N] = { 1, 2, 3, 4 },
    tab2[N] = { 5, 6, 7, 8 },
    tab3[N] = { 9, 10,11, 12 },
    tab4[N] = { 13, 14, 15, 16 };

  t[0] = tab1;
  t[1] = tab2;
  t[2] = tab3;
  t[3] = tab4;

  for (int j = 0; j < 4; j++)
  {
    for (int i = 0; i < N; i++) {
      printf("%d ", t[j][i]);
    }

    printf("\n");
  }
}

for循环也可以这样写:

  for (int j = 0; j < 4; j++)
  {
    int *temp = t[j];
    for (int i = 0; i < N; i++) {
      printf("%d ", temp[i]);
    }

    printf("\n");
  }

甚至更简单:

int main(int argc, char const *argv[]) {
  int t[N][N] =
  {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10,11, 12 },
    { 13, 14, 15, 16 }
  };

  for (int j = 0; j < 4; j++)
  {
    int *temp = t[j];
    for (int i = 0; i < N; i++) {
      printf("%d ", temp[i]);
    }

    printf("\n");
  }
}

答案 2 :(得分:0)

作为@Jabberwocky答案的补充,您甚至可以这样做:

#include <stdio.h>
#include <stdlib.h>
#define N 4

int main(int argc, char const *argv[]) {
    int i;
    int tab1[N] = {1, 2, 3, 4},
        tab2[N] = {5, 6, 7, 8},
        tab3[N] = {9, 10,11, 12},
        tab4[N] = {13, 14, 15, 16};
    int *t[N] = {tab1, tab2, tab3, tab4};

  for (int j = 0; j < N; j++)
  {
    for (int i = 0; i < N; i++) {
      printf("%d ", t[i][j]);
    }

    printf("\n");
  }
}