我需要一些关于指针数组的解释和更精确的如何声明它们。
看看这个代码:
数组指针声明
main()
{
int array[] = {5, 4, 2};
int array2[] = {6, 8};
int* int_arrays[2] = {array, array2}; // It works!
// int* int_arrays2[2] =
// {
// {5, 4, 2},
// {6, 8}
// };
//
int i, j;
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++) // This loop print a garbage value at the end, no big deal.
printf("%d\n", int_arrays[i][j]);
}
}
对我的评论declartation意思一样,如上图所示。但它不起作用。
Visual Studio C编译器给我提供了这些指示:
错误:太多初始值设定项。
警告:int *与int的间接级别不同。
我想这意味着int array[] = {5, 4, 2}
东西有效的分配到int*
而{5, 4, 2}
不是。
您能否告诉我一种正确删除指针数组的方法?
伟大的答案,它是在你的未来的书.. – artm
这很有趣,因为在发布我的问题之前,我尝试的最后一件事是将数组初始化器投射到'(int *)'。我猜'(int [])'工作,因为初始化器被转换为一个数组,然后'array [0]'自然等价于'* array'? – aurelienC
@atm,是的,复合文字开始于第5.4.4节或“现代C” –