设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
数据下标是-1是什么意思?
返回列表
查看:
803
|
回复:
3
数据下标是-1是什么意思?
[复制链接]
pdaliu
pdaliu
当前离线
积分
188
IP卡
狗仔卡
发表于 2010-6-11 15:30:03
|
显示全部楼层
|
阅读模式
在APUE2中文版的第101页。
char *ptr;
.....
.....
ptr[-1]=0;/*erase everything from slash onwards*/
是无论什么数组都可以,还是只有char *可以?
有人愿意详细的解释一下吗?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
liwangli
liwangli
当前离线
积分
245
IP卡
狗仔卡
发表于 2010-6-11 19:08:38
|
显示全部楼层
就是读取指针的前一个位置么,数组这么用语法上没错,实际上是错的(读取数组首元素的前一个位置肯定是越界了)。
回复
支持
反对
使用道具
举报
显身卡
pdaliu
pdaliu
当前离线
积分
188
IP卡
狗仔卡
楼主
|
发表于 2010-6-12 22:53:44
|
显示全部楼层
那程序没出错啊?
越界的话编译过程不就提示有错误了吗?
回复
支持
反对
使用道具
举报
显身卡
liwangli
liwangli
当前离线
积分
245
IP卡
狗仔卡
发表于 2010-6-12 23:27:05
|
显示全部楼层
这里ptr是个指针,指针是可变的。举例char *a = "help",此时a指向'h',如果进行了a++,则此时a指向'e',这时a[-1]指向的是'h',当然没有错。
但对于数组来说,比如char a[5] = "help",a始终只指向数组的第一个元素,不可变动,因此用a[-1]引用数组首元素的前一个内存位置,肯定就是越界错误了
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表