首页 - 科技 > 字符串常量的存储位置 那个字符串存储在哪个位置

字符串常量的存储位置 那个字符串存储在哪个位置

发布于:2024-04-17 作者:nyajiajiao.cz 阅读:9

C语言***字符串指针指向的字符串***那个字符串存储在哪个位置

你要位置,把内存地址都给你打印出来了。然后你怎么又牵扯到常量了?动态申请的变量(即malloc函数申请的变量)存放在堆区!

idxbuf=malloc(6*sizeof(char));

动态随机分配内存空间,共6个char型数据大小的空间,因为是随机的,idxbuf指针指向的内存空间的起始地址在后面的语句中打印出来:

printf("before idxbuf address:%p,idxbuf:%s\n\n",&idxbuf,

&idxbuf:取地址,%p与指针对应,是输出指针的地址。

address:0x7ffeffc9f0b0,就是字符串指针idxbuf指向的字符串存储在内存中的地址位置。

你要字符串指针idxbuf的随机分配的地址,只需要

printf("before idxbuf address:%p\n",&idxbuf);

这一语句就可以了,原来的程序编译有点问题,修改之后通过:

运行结果:

程序先编译后链接,转换成0与1的机器代码后调入内存运行。这个问题被你牵扯到程序运行的内存分配方式,而不是你所说的想找字符串在内存中的地址。请用内存分配方式详解提问!

简单的说,一个程序调入内存后,在内存中分为以下5个部分。

1、栈区(stack)

2、堆区(heap)

3、全局区(静态区)

4、文字常量区

5、程序代码区

内存分配详细不说了,

因为我已经很明确的根据提问回答了字符串存储的位置:address:0x7ffeffc9f0b0。

字符串常量在内存中的位置究竟是哪里

你是否曾经疑惑过,字符串常量在内存中的位置究竟是哪里?当我们提到代码中的#xxx#,其实它们有一个特别的名称——字符串常量。这些常量是由空字符结束的一组字符,它们在内存中占据着重要的位置。

🌍全局数据区

字符串常量中的字符实际上位于全局数据区。在C程序运行时,内存被划分为四个区域:堆区、栈区、代码区和全局数据区。而字符串常量中的字符就位于这个全局数据区。

📝字符串常量的定义

当你写下"hello"这个字符串常量时,它实际上就相当于在全局数据区创建了一个const char[6]数组。这些字符在内存中占据着重要的位置。

👨‍💻指针的定义

char*p="hello"这行代码实际上是有问题的。正确的应该是const char*p="hello",这意味着指针p指向的是全局数据区的一块内存,而这块内存恰好就是{'h','e','l','l','o','\0'}。

🤔对编程的理解

字符串常量在内存中的位置和作用,或许能让你对编程有更深入的理解。下次你在写代码时,不妨多留心一下这些字符串常量。

字符串常量在内存中存储是占的单元数怎么算

将所有字符的总数最后再加1,因为字符串最后会有个'\0',这是系统自动加上的。由于字符占的内存单元数为1byte,所以这样计算。如果有汉字,就要对应汉字乘以2,因为汉字占2个字节。

char型字符构成的字符串。

如:"Hello12345",共10个字符,但是因为最后还有一个隐含的'\0'用来标志结尾,所以共占11个字节。PC机中,1个字节(Byte,简写B)中含8bit,所谓bit就是可以存储0或者1的基本存储单元。

扩展资料:

一种常用的表示法是使用一个字符代码的数组,每个字符占用一个字节(如在ASCII代码中)或两个字节(如在unicode中)。它的长度可以使用一个结束符(一般是NUL,ASCII代码是0,在C编程语言中使用这种方法)。或者在前面加入一个整数值来表示它的长度(在Pascal语言中使用这种方法)。

这是一个用NUL结束的字符串的例子,它用10个byte存储,用ASCII表示法:

F R A N K NUL k e f w;46 52 41 4E 4B 00 6B 66 66 77

上面的字符串的长度为5个字符,但注意它占用6个字节。结束符后的字符没有任何意义。

这是相同的Pascal字符串:

length F R A N K k e f w;05 46 52 41 4E 4B 6B 66 66 77

当然,可能还有其它的表示法。使用树和列表可以使得一些字符串操作(如插入和删除)更高效。

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至 465747283@qq.com举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关文章

自定义链接1

电话咨询
自定义链接2