问题标签 [char-pointer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么我的程序在使用堆分配内存时会引发分段错误?
在编写了一个反转字符串的程序后,我无法理解为什么在尝试反转字符串时会出现段错误。我在下面列出了我的程序。
第一个问题:
即使我只为 char 指针 str ( calloc(1,'\0')
) 分配了 1 个字节的内存,并且我将一个 18 字节的字符串复制mystring0123456789
到其中,它也没有抛出任何错误,并且程序在没有任何 SEGFAULT 的情况下运行良好。
为什么我的程序没有抛出错误?理想情况下,它应该抛出一些错误,因为它没有任何内存来存储那个大字符串。有人可以解释一下吗?
该程序运行完美,并给了我输出Reverse String is: 9876543210gnirtsym
。
第二个问题:
如果替换语句
和
即使我为 str ( malloc(100)
) 分配了足够的内存,程序也会出现分段错误。
为什么程序抛出分段错误?
c++ - char指针上的C++错误
我想在结构内初始化一个 char* 字符串。
这是结构:
这就是它崩溃的地方..
这是主要的:
第一个进展顺利,第二个没有..请你帮我理解问题出在哪里?谢谢!
c++ - Empty char* 成功转换为有效的 unsigned int64 游戏 ID??如何?
我正在开发一款游戏,但遇到了一个奇怪的小问题......我想知道这里是否有人能够解决这个问题并向我解释(它让我吃不消!)
首先,这是相关代码。
游戏是1对1多人游戏。这个包含函数是一个回调函数,只要发生值得注意的事情(例如踢玩家或开始游戏)就会运行。我有 2 台计算机正在测试在线内容(一台 Windows 7 机器和 Windows XP 机器)。
在这种情况下,当两个玩家同时按下“开始游戏”时,会可靠地出现一个奇怪的错误。Windows XP 机器播放器将被踢(通过上面的代码) - 这表明GetGameData("kick_member_id")
返回了他的 ID……但它没有。
调试:
- 我已经注释掉了设置 GameData“kick_member_id”值(即禁用踢)的代码,以确保 - 并且错误继续发生。主机没有踢客户端。
- 我已经输出
c_KickID
到一个文件并且它是空的(XP机器没有Visual Studio,所以我不能在它上面设置断点,所以我只是将它的内容输出到一个文件中)。 - 我试图明确地踢 XP 播放器。他们的 ID 已成功写入输出文件,并按预期被踢了。
- 我已经输出
kickID
到一个文件,它等于myID
,这就解释了为什么if (myID == kickID)
通过。
回顾一下:
所以......当将空c_KickID
转换为时unsigned long long
,它被设置为myID
......这怎么可能?我完全失去理智了!
我已经通过将 a 转换char *
为 astd::string
并检查它是否为空来解决这个问题,如果它是空的,那么我只是绕过这个代码。但我仍然不知道问题到底是什么。我为此失眠了!!!
c - 从 strtok 填充 char*[]
我无法按照代码工作。它将用户输入解析为 char*[] 并返回它。但是 char* command[] 不接受任何值并保持填充为 NULL...这里发生了什么?
您可能会假设,命令行!= NULL,长度!= 0
c++ - 为什么我不能使用 '=' 运算符将数组变量直接分配给另一个数组变量?
为什么以下作业不起作用?如果可能的话,我想要一个低层次的解释。另外,这是我得到的编译器错误:将'char *'分配给'char [20]'时的类型不兼容
c++ - 函数调用上下文中的 char 指针、char 数组和字符串
不编译的行和编译的行有什么区别?不编译的行给出了这个警告: deprecated conversion from string constant to 'char*'
另外,我知道在传递给函数的字符串上强制转换 (char *) 可以解决问题,但我想了解为什么当第二行编译得很好时,这甚至是必要的。
c++ - 为什么我在使用 ++ 时会出现 seg 错误,而在使用 '1 +' 时却没有?
请解释为什么我使用 ++ 运算符得到段错误。显式加 1 和使用 ++ 运算符有什么区别?
c++ - 通过指针访问 char*
这是我的问题。
我有一个定期修改 char* 的类。
还有另一个类,需要能够读取这个值。所以我想将 char* 传递给第二个类的构造函数,以便它可以在需要时检查值。
让我举一个我对另一个参数的实现示例,它是布尔类型:
在 A 类:
B类:
到目前为止一切顺利 - 这似乎有效。两个类都可以更改和访问此布尔值。
现在我需要用 char* 做同样的事情(我不能使用字符串,所以我想这是存储短文本的最佳方式,比如 url 地址?)。
所以这是我写的:
A类:
C类:
我想问题是因为字符串已经改变了,它的地址也改变了?我真的很困惑 - 有人可以告诉我发生了什么,在这种情况下我该怎么办?
更新:
看起来问题出在我如何修改char *:
有没有其他方法可以将字符串的值写入 char *?
c++ - 将值存储在 char 指针指向的 char 数组中
我有一个字符指针。
现在我想将ch指向的 char 数组的值存储在另一个数组arr中。我想永久存储ch指向的值,这样在ch上执行的任何其他操作都不会修改数组的原始值。
谁能告诉我该怎么做?
c - C 中的 char* 和布尔值 TRUE FALSE
我有一段遗留代码,char*
它有用于 if-then-else 逻辑流的函数参数。例如:
假设我是myFunc(char *f_reset)
从main()
当我尝试进入函数调用时,我发现它*f_reset
永远不会被评估为0
错误 - 因为一些垃圾-8342345825
或类似的东西,它总是正确的。
它使用的原因char*
可能是因为在过去 boolean 比 char * 占用更多的内存?我过去在 Stackoverflow 帖子中读到的一些内容。
char*
有人可以给我一个关于逻辑真假之间关系的虚拟指南吗?