指针怎么能有一个字符串作为它的值
How can a pointer have a string as its value?
例如:
const char* f = "123";
据我所知,f
将地址作为其值。但是为什么?它不应该产生错误吗?
指针的值不是字符串,而是字符串文本中第一个字符的内存地址。
这是足够的信息,因为字符串文本以 null 结尾。发生的情况是在内存中创建大小(字符数(+1 的字符数组。数组中最后一个字符的值为 ' '
(字面上所有位均为零(,这表示字符串文本的结束,以便按顺序读取该数组的代码知道不会超过该索引。
执行
程序时,文本字符串"123"
从程序文件复制到进程的内存中。通常,文本放置在只读内存中。这就是为什么指向字符串文本时需要const
的原因。f
指向文字的第一个字符。
const char *f = "123";
// f[0] is '1'
// f[1] is '2'
// f[2] is '3'
// f[3] is ' '
相关文章:
- 我怎么能有一个以2D数组为参数的函数,而数组有一个我想更改的参数/维度
- 指针怎么能有一个字符串作为它的值
- 这两个指针怎么能有相同的值
- 我怎么能写一个长度函数来返回间隔的长度
- 为什么嵌套类不能有一个类型为封闭类的成员?
- 我怎么能把一个有点的向量变成一个有值的向量呢
- 我怎么能知道一个进程是什么时候创建的,并阻止它在windows中执行或终止它
- 为什么 C++ 数组的大小不能有一个返回常量的函数调用
- 一个正则类在c++中怎么可能有一个singleton子类
- 我怎么能从一个有很多行的.dat文件中读取,并在数组中只收集几个值,直到EOF
- 我怎么能写一个函数的定义在模板类中声明返回指针结构对象
- 我不能有一个将多个整数作为参数的构造函数方法/原型吗?阿杜伊诺
- 我怎么能打断一个无限的等待呢?
- 我怎么能得到一个堆栈溢出在c++和Unix
- 我怎么能使用一个非常量值实例化一个类的多个对象
- 我怎么能看到一个c++类如何得到布局在内存与gdb
- 我怎么能有一个关联数组与许多值
- 在MFC,我怎么能有一个按钮来创建几个对话框实例连续不关闭它们
- 我怎么能有一个枚举自定义类
- 我有两个gpu,我怎么能让一个做特定的CUDA任务