C++ 在函数内按索引更改数组
c++ change array by index inside function
void changeArray(char* str1) {
str1[0] = 'f';
}
int main() {
char* msg1 = "andrew";
changeArray(msg1);
cout << msg1 << endl;
return 0;
}
嗨,伙计们,我不明白为什么我会遇到分段错误。 函数内部的索引无法访问指针?(C++(
您正在尝试修改字符串文本,这会导致未定义的行为。
尝试修改字符串文本会导致未定义的行为:它们可能存储在只读存储(如 .rodata(中或与其他字符串文本组合:
const char* pc = "Hello"; char* p = const_cast<char*>(pc); p[0] = 'M'; // undefined behavior
而且,自 C++11 年以来不允许char* msg1 = "andrew";
,
在 C 语言中,字符串文字的类型是
char[]
的,可以直接分配给(非常量(char*
。C++03 也允许它(但弃用了它,因为文字在 C++ 中const
(。C++11 不再允许在没有演员的情况下进行此类任务。
您可以改为构造和传递char
数组。
字符串文本可用于初始化字符数组。如果一个数组像
char str[] = "foo";
一样初始化,str
将包含字符串"foo"
的副本。
例如
int main() {
char msg1[] = "andrew";
changeArray(msg1);
cout << msg1 << endl;
return 0;
}
在int main()
中,您将 msg1 声明为指向字符的指针,而不是字符数组。这样做:char msg1[] = "andrew";
.
相关文章:
- 数组索引的值没有增加
- 并行用于C++17中数组索引范围内的循环
- 数组索引重载错误
- 通过指针与数组引用扩展数组索引序列
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 缓冲区溢出 - 数组索引越界(严重)
- 为什么C++数组索引值是有符号的,而不是围绕size_t类型构建的(或者我错了)
- 查找下一个具有真值C++的数组索引
- 在编译时自动生成用于稀疏数组索引的switch语句
- 在数组索引上引发异常
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 平衡数组索引,同时从左和右对数组求和
- 为什么C ,Devstudio,数组索引工作
- 如何对同一数组索引下的结构成员进行排序?
- 我想返回数组索引,而不是数组值
- C++相当于 Python 的:用于数组索引
- 分段错误:为什么这里的数组索引越界了
- 数组索引在地图上不是整数
- 根据用户输入的每个字母添加到数组索引
- C 数组索引