V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrgHOST
V2EX  ›  C

c 语言

  •  
  •   MrgHOST · 2016-08-03 08:34:04 +08:00 · 3327 次点击
    这是一个创建于 3036 天前的主题,其中的信息可能已经有所发展或是发生改变。

    u8 *p="hello";

    为什么程序总是执行错误 而编译能通过

    21 条回复    2016-08-03 16:33:23 +08:00
    linux40
        1
    linux40  
       2016-08-03 08:45:02 +08:00 via Android
    买一本好的参考书吧
    klausroot
        2
    klausroot  
       2016-08-03 08:49:15 +08:00
    编译是肯定是能通过的,"hello"是存在地址的,但不知道你是怎样执行出现错误的?
    jimages
        3
    jimages  
       2016-08-03 08:52:38 +08:00 via Android
    最好把其他代码也贴上去。
    zuoxiaomo
        4
    zuoxiaomo  
       2016-08-03 09:00:53 +08:00
    掐头去尾的代码怎么看?
    wangxn
        5
    wangxn  
       2016-08-03 09:07:48 +08:00 via Android
    少了 const 。楼主后续肯定修改了 p 。
    nightspirit
        6
    nightspirit  
       2016-08-03 09:20:08 +08:00
    u8 是什么?宏么?怎么定义的,还有就是报的什么错额
    jixiangqd
        7
    jixiangqd  
       2016-08-03 09:29:36 +08:00
    已 block ,发现 v2 越来越水了,连提问题都这么表意不清
    jeffersonpig
        8
    jeffersonpig  
       2016-08-03 09:30:55 +08:00
    就这么一句谁知道错哪儿了
    好好学一下怎么提问代码问题再来吧 LZ
    Jolly23
        9
    Jolly23  
       2016-08-03 09:31:36 +08:00 via iPhone
    问问题不会么?啥都不说明白, u8 是啥,内存地址申请了么?
    bp0
        10
    bp0  
       2016-08-03 09:44:58 +08:00   ❤️ 1
    u8 应该是 unsigned char 。

    上述语句表示 p 指向了“ hello ”这个字符串的首地址,但是这个字符串是不能修改的。

    如果你使用了类似 p[0] = 'a'; 之类的语句就会遇到运行时错误。
    easing
        11
    easing  
       2016-08-03 09:53:52 +08:00
    这个问题应该是初学者都会迷惑的地方吧,我觉得还是不直接给答案比较好, lz 再好好看看字符串常量和指针吧
    shanechiu
        12
    shanechiu  
       2016-08-03 10:27:56 +08:00
    hxtheone
        13
    hxtheone  
       2016-08-03 10:45:43 +08:00
    写代码不会, 问问题都不会, b 了
    josephok
        14
    josephok  
       2016-08-03 12:19:54 +08:00
    blocked
    pagict
        15
    pagict  
       2016-08-03 14:11:37 +08:00   ❤️ 2
    u8 是什么都不知道 楼上各位就开始喷 LZ 不会提问题了 是不是应该反思自己看的代码量不够而不是质疑对方提问的技巧呢

    u8 是在 Linux Kernel 代码中随处可见的数据类型

    #define u8 unsigned char

    遇见自己不知道的,能不能先反思一下到底是自己学识不够没见过,还是别人胡编乱造没水平?
    ragnaroks
        16
    ragnaroks  
       2016-08-03 15:07:33 +08:00   ❤️ 1
    虽然我知道 u8 是什么,但是楼主不贴全代码,真没法知道出了什么问题
    zhicheng
        17
    zhicheng  
       2016-08-03 15:25:33 +08:00
    @pagict 兄台你用 define 定义类型?
    pagict
        18
    pagict  
       2016-08-03 15:28:23 +08:00
    @zhicheng 不是我的定义 linux kernel 里的
    zhicheng
        19
    zhicheng  
       2016-08-03 15:32:23 +08:00
    @pagict 看不到用 typedef 的定义,非要举一个错误的例子?
    pagict
        20
    pagict  
       2016-08-03 15:46:32 +08:00
    @zhicheng 是我疏忽了 取证不严谨 多谢赐教
    jasonlz
        21
    jasonlz  
       2016-08-03 16:33:23 +08:00
    "hello" 是 const unsigned char*类型。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1258 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.