|
代码:
#include <stdio.h>
#include <stdlib.h>
int (*p())[4] /*p 是一个函数,这个函数的返回值是一个指向有 4 个整形数的一维数组的指针*/
{
int (*m)[4]; /*m 和主函数里的 a 是同一类型变量*/
int i;
m = (int (*)[4]) calloc (4, sizeof (int)); /*给 m 分配空间*/
if (m == NULL) {
perror ("calloc");
exit (EXIT_FAILURE);
}
for (i = 0; i < 4; i++)
*(*m + i) = i + 1; /* m 是一维数组指针, *(m+i) 是这一维数组中元素个体的指针*/
return (m);
}
int main()
{
int (*a)[4]; /*a 是一个指向有 4 个整形数的一维数组的指针*/
int i;
a = p();
for (i = 0; i < 4; i++)
printf ("%d ", *(*a + i));
free (a); /*释放分配的内存*/
printf ("\n");
return (0);
} 运行输出:[beyes@localhost programming]$ ./temp1.exe
1 2 3 4
关于二维数组及一维数组指针见:http://www.groad.net/bbs/read.php?tid-1276.html |
|