我们如何分配指向数组的指针

Ami*_*mar 4 c

我在接受采访时被问过,有一个指向10个整数数组的指针,如下所示.

 int (*p)[10];
Run Code Online (Sandbox Code Playgroud)

你如何动态分配?

这是我做过的事情

p=(int *)malloc(10*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

但它看起来不对,因为我没有做正确的类型转换.

所以我想知道*p的类型是什么?

与int*p类似,p的类型为int.

oua*_*uah 9

以下是如何分配:

p = malloc(sizeof *p);
Run Code Online (Sandbox Code Playgroud)

要么

p = malloc(sizeof (int [10]));
Run Code Online (Sandbox Code Playgroud)

p是类型int (*)[10]*p类型int [10].

p是指向数组10的指针,int并且*p是数组10 int.

  • 在C中@AmitSinghTomar你不应该转换`malloc`返回值.有关基本原理,请参阅c-faq.com/malloc/mallocnocast.html.否则`malloc(10*sizeof(int))`没有错,但`malloc(sizeof(int [10]))`在这种特殊情况下更正确. (2认同)