社区
语言基础/算法/系统设计
帖子详情
关于字符串的地址?
KKKK2000
2003-08-19 07:25:40
请问
var hh : String;
hh := 'efwefwefw';
pointer(hh)^,@(hh[1])分别表示的什么意思?
我认为pointer(hh)^表示的就是第一个字符的物理地址,但是它又和
@(hh[1])不相等。
晕了。。。。。。。。。。。
...全文
183
15
打赏
收藏
关于字符串的地址?
请问 var hh : String; hh := 'efwefwefw'; pointer(hh)^,@(hh[1])分别表示的什么意思? 我认为pointer(hh)^表示的就是第一个字符的物理地址,但是它又和 @(hh[1])不相等。 晕了。。。。。。。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoyuer0851
2003-08-23
打赏
举报
回复
同意楼上的,果然是 与众不同,呵呵,谢谢
lxpbuaa
2003-08-23
打赏
举报
回复
@(hh[1])看似是指向字符串第一个字符的指针,实际上是错误的想法。hh[1]生成了一个临时字符变量,而@(hh[1])就是取得这个临时变量的地址!跟hh已经毫无关系了!相当于:
var
C: Char;
begin
C := hh[1];
你现在能说@C是指向hh第一个字符的指针么?
end;
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
lxpbuaa
2003-08-23
打赏
举报
回复
var hh : String;
hh := 'efwefwefw';
1、pointer(hh)相当于: PChar(hh)。只不过pointer(hh)没有指定类型而已。你可以用下列代码测试:
if pointer(hh) = PChar(hh) then ShowMessage('相等');
也就是说pointer(hh)是指向'e'的。
pointer(hh)^这样的用法实际上是不对的,^应该操作在有类型而不是无类型指针上,否则无法正确操作,因为^操作符对于不同类型的指针而言含义有所不同。也就是说它在理论上相当于PChar(hh)^,结果为‘e’。
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
zjqyb
2003-08-23
打赏
举报
回复
你自己去比较一下pointer(hh) 和 @(hh[1])的值就知道了
是不是pointer(hh)=@(hh[1]),
pointer(hh)才是第一个字符的物理地址!!!!
若hh := '1234';
pointer(hh)^ 就为 $34333231;
pointer(hh)^表示的就是第一个字符的物理地址纯粹是天方夜谭
zjqyb
2003-08-23
打赏
举报
回复
弄清楚就好了,只要是人难免会犯错,只要大家互相学习,相信明天会更好!!!
lxpbuaa
2003-08-23
打赏
举报
回复
zjqyb() ( ▲▲▲▲▲) :
你是对的,我对于@(hh[1])的问题说错了。
@(hh[1]) = pointer(hh) = PChar(hh)。
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
zjqyb
2003-08-23
打赏
举报
回复
也可以说@(hh[1])是hh所指向字符串'efwefwefw'的地址
看汇编,就会明白一切
zjqyb
2003-08-23
打赏
举报
回复
我觉得@(hh[1])是指向字符串第一个字符的指针,没有错
p:pchar;
p:=@(hh[1]);//相当于pchar(hh);
rustle
2003-08-20
打赏
举报
回复
同意movingboy2(movingboy2)
Hewin
2003-08-20
打赏
举报
回复
String 第0到-3時它的長度,第-4到-7是它的長度!它的數據物理地址在@S[1]開始
KKKK2000
2003-08-20
打赏
举报
回复
楼上的,hh是一个字符串变量,pointer(hh)的意思是存储该字符串地址的指针,
pointer(hh)^表示的是字符串变量地址里的内容,就是第一个字符的存储地址。
你明白了吗??????
zjqyb
2003-08-20
打赏
举报
回复
跟你说是pointer(hh)
KKKK2000
2003-08-20
打赏
举报
回复
但是存储的空间因该是连续的,但我发现pointer(hh)^ 和@(hh[1])
的地址相差太远,根本不是32bits。
movingboy2
2003-08-19
打赏
举报
回复
Delphi的string是优化过的,在字符串的头部留了32bits来放引用计数,
所以字符串的起始地址和字符串第1个字符的地址不一样。
zjqyb
2003-08-19
打赏
举报
回复
是pointer(hh) 不是pointer(hh)^
c语言存字母
字符串
数组,C语言中字符数组可以存放
字符串
吗?
在C语言中,字符数组可以存放
字符串
。字符数组是对
字符串
有特殊处理能力的数组。字符数组就是用来对
字符串
进行操作的,当然可以存放
字符串
,且
字符串
可以整体输入、输出。数组的赋值操作是不能整体操作的,而需要对其中元素逐个赋值,字符数组也不例外。字符数组和
字符串
用来存放字符的数组称为字符数组。字符数组的各个元素依次存放
字符串
的各字符,字符数组的数组 名代表该数组的首
地址
,这为处理
字符串
中个别字符和引用整个字...
C语言12之什么是
字符串
类型?
时间:2018.3.4 作者:Tom 工作:HWE 说明:如需转载,请注明出处。说明:本文主要参考朱有鹏老师linux嵌入式C语言高级篇笔记,已注明转载。1.C语言的
字符串
类型1.1 C语言没有原生
字符串
类型1)很多高级语言像java、C#等就有
字符串
类型,有个String来表示
字符串
,用法和int这些很像,可以String s1 = "linux";来定义
字符串
类型的变量。2)C语言没有S...
java怎么输出
字符串
_java输出
字符串
,怎么样输出
字符串
?
下面要给大家讲的就是java输出
字符串
的问题,那么java怎样输出
字符串
呢?具体要怎样操作?一起来了解一下。一般在java编程的过程当中,经常会使用System.out.println();来输出
字符串
。来看一下System.out.println();首先是System,System是一个类,它继承于根类Object。其次是out,out的话是类PrintStream类实例化的一个对象,并且还是...
字符数组和
字符串
的区别,C语言字符数组和
字符串
区别详解
C 语言中并不存在
字符串
这个数据类型,而是使用字符数组来保存
字符串
。那么,字符数组就一定是
字符串
吗? 对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和
字符串
是完全不相同的两个概念,千万不要混淆。分析如下所示的示例代码。 #include <stdio.h> #include <string.h> int main(void) { /*字符数组赋初值*/ char cArr[] = {'I','L','O','V','E','C'}; /*
字符串
赋
C语言_
字符串
的
地址
以及指向
字符串
的指针变量的定义
一、
字符串
的
地址
以及指向
字符串
的指针变量的定义。 1. 字符常量:用单引号括起来的一个字符。 2.
字符串
常量:用双引号括起来的一串字符。 3. 注意:由于变量只能存放一个字符,所以
字符串
只能存储在数组当中。 4. 用一维字符数组存放
字符串
:char str[] = “hello”; 5. 注意:字符数组可以没有’\0’,但
字符串
数组必须有’\0’ 二、
字符串
的赋值: 1. 可以在定义字符指针变量的同时,将一个
字符串
赋值指针变量。例如:char *ps1 = “form one” 把存放
字符串
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章