当前位置:  开发笔记 > 编程语言 > 正文

指针声明数组

如何解决《指针声明数组》经验,为你挑选了1个好方法。

我需要对指针数组进行一些解释,更准确地说,如何声明它们.
看看这段代码:

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]);
    }
}

对我来说,评论的声明意味着与上面的相同.但它不起作用.
visual studio C编译器给我这些指示:
错误:初始化程序太多.
警告:int*的间接级别与int不同.

我想这意味着int array[] = {5, 4, 2}分配到一段int*
时间的事情是有效的{5, 4, 2}.
你能告诉我一种方法来正确地删除我的指针数组吗?



1> Jens Gustedt..:

数组初始值设定项不是对象,因此您不能拥有指向此类和对象的开头的指针.如果你有至少C99,你可以做到

int* int_arrays2[2] =
{
     (int[]){5, 4, 2},
     (int[]){6, 8}
};

这些是所谓的"复合文字",它们是对象,因此在这种情况下会转换为您需要的指针类型.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有