C语言 如何在数组的数组中正确赋值?

qnyhuwrf  于 2023-02-03  发布在  其他
关注(0)|答案(2)|浏览(138)

有没有办法在数组的数组中赋值?
具体来说,我编写了以下代码:

#include <stdio.h>
#include <stdlib.h>

void func(int **A){  //A: address of (address that the pointer stores)
  int i;
  *A=(int *)malloc(5*sizeof(int));    //*A: address that the pointer stores
  for (i=0;i<5;i++){
    **A=i;          //**A: content
  }
}

int main(){
  int *k, i;
  func(&k);

  for (i=0;i<5;i++){
    printf("%d ", k[i]); 
  }
  return 0;
}

函数中的语句**A=i似乎只在数组的第一个位置赋值(每次执行代码时输出都是4 0 0 0 0)。
我也尝试过使用*A[i]=i,在这种情况下,编译器终止执行,并显示以下消息:signal: illegal instruction (core dumped).
我能做些什么来解决这个问题吗?

bxpogfeg

bxpogfeg1#

有几个等价的构造允许这样做。
给你

for (i=0;i<5;i++){
  A[0][i] = i; 
}

for (i=0;i<5;i++){
  ( *A )[i] = i;
}

for (i=0;i<5;i++){
  *( *A + i ) = i;
}
dced5bon

dced5bon2#

数组索引运算符[]的优先级高于取消引用运算符*
你需要用括号做你想做的事。

(*A)[i]=i;

相关问题