zoukankan      html  css  js  c++  java
  • C++二维数组 取地址 复制给 二维指针

    本来应该是个简单的问题,但是我就不明白了,为什么会段错误了。。。

    #include<stdio.h>
    #define UINT32 unsigned int
    UINT32 NType1_XY[11][2]={
    {2300,500 },{900 ,1600},{2300,1600},{3700,1600},
    {600 ,3500},{2300,4000},{2300,3000},{4000,3500},
    {900 ,5400},{2300,6000},{3700,5400}
    };
    int main(){
    
    UINT32 **ntype_xy;
    ntype_xy=NType1_XY;
    
    printf("x=%d,y=%d
    ",ntype_xy[0][0],ntype_xy[0][1]);
    printf("x=%d,y=%d
    ",NType1_XY[0][0],NType1_XY[0][1]);
    
    return 0;
    }

    提示


    aaaa.cpp: In function 'int main()':
    aaaa.cpp:11:9: error: cannot convert 'unsigned int [11][2]' to 'unsigned int**'
    in assignment
    ntype_xy=NType1_XY;

    那我强制转换吧:

    ntype_xy=(UINT32**)NType1_XY;

    可以编译了但是在打印的时候 却段错误,程序崩溃了。

    最后查了下资料 以及 尝试尝试 ,终于 知道了 怎么才能不强制转换 不报错,打印出来了:

    #include<stdio.h>
    #define UINT32 unsigned int
    UINT32 NType1_XY[11][2]={
    {2300,500 },{900 ,1600},{2300,1600},{3700,1600},
    {600 ,3500},{2300,4000},{2300,3000},{4000,3500},
    {900 ,5400},{2300,6000},{3700,5400}
    };
    int main(){
    int xx=3;
    int *pxx;
    pxx=&xx;
    
    UINT32 (*ntype_xy)[2];
    ntype_xy=&NType1_XY[0];
    
    printf("x=%d,y=%d
    ",ntype_xy[0][0],ntype_xy[0][1]);
    printf("x=%d,y=%d
    ",NType1_XY[0][0],NType1_XY[0][1]);
    
    return 0;
    }

    如果可以反汇编,就可以知道 究竟为什么错了。。。懒得搞 不熟悉的东西了。。。

  • 相关阅读:
    linux 常用命令
    restframeword之视图,解析器
    restframework之序列化
    restframeword之APIview
    MongoDB
    redis
    mysql优化
    (java)图片像素的操作
    关于java AudioInputStream播放短音频没声音的问题
    java向文件中追加内容的一种简单方式
  • 原文地址:https://www.cnblogs.com/ayanmw/p/3462919.html
Copyright © 2011-2022 走看看