gpt4 book ai didi

c - C中的指针初始化和字符串操作

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:42 28 4
gpt4 key购买 nike

  1. 我有这个函数,它从 main() 中调用了大约 1000 次。当我在这个函数中使用 malloc() 初始化一个指针时,发生段错误,可能是因为我在离开函数之前没有 free() 它。现在,我尝试在返回 main 之前 free()ing 指针,但它没有用,最终发生段错误。
    1. 上述场景是一回事,我如何初始化双指针 (**ptr) 和指向指针数组的指针 (*ptr[])?
    2. 有没有办法将字符串(它是一个字符数组)复制到一个字符指针数组中。字符 []; (假设有五十个这样的阵列)字符 *ptr_arr[50];现在我想在 *ptr_arr[] 中指向每个这样的字符 arr[]我如何在这里初始化 char *ptr_arr[]?
    3. C 中未初始化的指针有什么影响?
    4. strcpy() 是单独附加“\0”还是我们必须手动添加?与 strncpy() 相比,strcpy() 的安全性如何?与 strcat() 和 strncat() 一样。

谢谢。

最佳答案

  1. 段错误可能由多种原因引起。您是否检查 malloc 之后的指针(如果它为 NULL)?遍历代码行以准确查看它发生的位置(并提出一个包含更多详细信息和代码的单独问题)

  2. 你似乎没有理解C中指针和数组的关系。首先,一个指向指针数组的指针被定义为type***type* *[]。实际上,只有两次间接指针是有用的。尽管如此,您仍然可以拥有类似的东西,只需多次取消引用指针并进行实际的内存分配。

  3. 这很乱。应该是一个单独的问题。

  4. 它们很可能会使您的程序崩溃,但这是未定义的,所以您不能确定。它们可能具有已使用的内存“插槽”的地址,因此可能存在您甚至没有注意到的错误。

关于c - C中的指针初始化和字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com