C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C中的char指针初始化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关于字符指针以及它们是如何工作的我不太清楚.

程序构建,但在运行时崩溃.

char *ab = NULL;
 //ab = "abc123"; // works fine
 sprintf(ab,"abc%d",123); // this line seems to crash the program

当sprintf接受(char * str)作为第一个参数时,我不明白这是怎么回事.

有人可以向我解释一下吗?

解决方法

你没有分配任何内存用于ab.

一个赋值是有效的,因为你要赋予ab一个字符串常量:“abc123”.编译器代表您提供常量字符串的内存:您不需要分配此内存.

在你用ab之前sprintf,你需要使用malloc分配一些内存,并将该空间分配给ab:

ab = malloc(sizeof(char) * (NUM_CHARS + 1));

那么只要你使用malloc创造了足够的空间,你的sprintf就会工作.注意:1代表null terminator.

或者,您可以通过将其声明为数组来为ab创建一些内存:

char ab[NUM_CHARS + 1];

如果不以某种方式为ab分配内存,sprintf调用将尝试写入NULL,这是未定义的行为;这是你崩溃的原因.

大佬总结

以上是大佬教程为你收集整理的C中的char指针初始化全部内容,希望文章能够帮你解决C中的char指针初始化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。