开发者社区> 问答> 正文

int类型指针可以指向char类型数组吗??报错

这次安徽省C语言二级考试中出现如图的赋值,编译器报错,但是要输出也可以输出。为什么?

展开
收起
爱吃鱼的程序员 2020-06-10 15:11:12 1436 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这么说吧,无论什么类型的指针其实本质上是一样的,都是保存了一个8个字节的地址值(32位机是4个字节,其实就是2^32=4字节,2^64=8字节)。所谓指针分类型是需要告诉系统,在进行指针运算时应该采取哪种策略,比方ptr++,如果是int型就是向后偏移4个字节,如果是一个类类型其大小为100个字节,那么就是向后偏移100个字节。你这个用int型的ptr指向char型的问题在于,char型是一个字节,而int型是4个字节,*ptr的值是4个char型字符组合起来共同组成的int型值。编译是可以能的过的,但可能会出现越界的情况,这是我们极不想看到的。

    C对类型转换之间的检测没有C++那么要求严格,所以就给个警告。只要自己知道在做什么程序就还可能得到需要的结果。

    还有,你报错是因为sizeof写错了。

    这是出现在等级考试中的错误,咋办?

    <imgsrc="http://static.oschina.net/uploads/space/2016/0109/110635_cHol_2445688.png"alt="">

    你这个考的是int类型是2个字节。char是1个字节。还有指针的用法。

    提示出错,你就改正确吧。

    首先C语言是弱类型语言,

    其次,printf(p)在这里与printf("%s",p)等效,,,所以输出的还是字符串,

    printf("%d",*p);

    2020-06-10 15:11:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载