• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

如下程序,怎么通过cc给数组赋值

莱克迷KW 2021-11-24 浏览量:340
uint32_t bb = 0;
    uint16_t aa[10];
    int16_t *cc;
    bb = &aa[0];
 

    cc=(int16_t *)bb;


如下代码编译通过,无法运行

*cc= 1234;


环境ubuntu 14.04

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 因为你给的代码不全,所以不好说。

    我们大致分析一下:

    uint32_t bb = 0;  // 这里声明并初始化了一个uint32_t的变量bb,初始化赋值了0
    uint16_t aa[10];  // 这里声明了uint16_t数组aa,有10个元素,没有初始化
    int16_t *cc;        // 这里另外声明了指向uint16_t指针的指针变量 cc,加 * 表示指针变量
    bb = &aa[0];       // 把 aa 的地址 赋值给bb,注意 &aa[0] == aa,在32bit系统中,地址值是32bit无符号整数

    cc=(int16_t *)bb;  // 把bb的值,也就是aa的地址赋值给cc,并强制为int16_t类型指针

    *cc= 1234           // 把cc指向位置的值设置为1234

    • 发布于 2021-11-24
    • 举报
    • 评论 5
    • 0
    • 0
莱克迷KW 回复了 xdsnet:int16_t *cc 为是定义了一个int16_t类型的指针变量么 回复
xdsnet 回复了 xdsnet:我前面记错了,int16_t 其实就是int16,int16_tp,一般 才是指针类型,回复的内容已经改过 回复
莱克迷KW 回复了 xdsnet:这段代码可以运行么,我这里运行有错误:Segmentation fault (core dumped) 回复
xdsnet 回复了 xdsnet:可能不同编译情况不同的。 回复
xdsnet 回复了 莱克迷KW:我估计是你环境系统是64bit的,所以编译运行会有问题。 回复

其他答案 数量:1
  • 为什么不能运行,有什么现象么,还是有什么错误呢,这应该是对的啊。
    • 发布于2021-12-02
    • 举报
    • 评论 1
    • 0
    • 0
莱克迷KW 回复了 一笔之名也 :可能是平台环境配置的问题 回复

相关问题

问题达人换一批

如下程序,怎么通过cc给数组赋值