c 语言

2016-08-03 08:34:04 +08:00
 MrgHOST

u8 *p="hello";

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

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

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

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

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

#define u8 unsigned char

遇见自己不知道的,能不能先反思一下到底是自己学识不够没见过,还是别人胡编乱造没水平?
ragnaroks
2016-08-03 15:07:33 +08:00
虽然我知道 u8 是什么,但是楼主不贴全代码,真没法知道出了什么问题
zhicheng
2016-08-03 15:25:33 +08:00
@pagict 兄台你用 define 定义类型?
pagict
2016-08-03 15:28:23 +08:00
@zhicheng 不是我的定义 linux kernel 里的
zhicheng
2016-08-03 15:32:23 +08:00
@pagict 看不到用 typedef 的定义,非要举一个错误的例子?
pagict
2016-08-03 15:46:32 +08:00
@zhicheng 是我疏忽了 取证不严谨 多谢赐教

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX