c - 为什么使用 & 运算符时 char* 和 char[x] 之间的差异很重要

标签 c arrays pointers

以下代码将出现段错误。

char* input = "12.34"; //< this is only to simplify the example.

char buffer[30] = { 0 };
memcpy(buffer, input, strlen(input));

char* part1 = strsep(&buffer, "."); 

下面的代码不会。

char* input = "12.34"; //< this is only to simplify the example.

char buffer[30] = { 0 };
memcpy(buffer, input, strlen(input));

char* ptr = buffer; //< Only diff.
char* part1 = strsep(&ptr , "."); 

当通过引用( & )作为函数参数传递时,为什么 char** 之间存在差异和char*[30]事情?

最佳答案

如果您查看 strsep 的 man,它需要双指针,因为它尝试分配指针。

"char *strsep(char **stringp, const char *delim);
...
and *stringp is updated to point past the token"

基本上,如果你有一个数组,你不能只是告诉数组的头位于一个新位置。但是,您可以创建一个指向该数组中任何元素的指针,然后更改该指针的值(如果您愿意,可以使其指向不同的元素)。

关于c - 为什么使用 & 运算符时 char* 和 char[x] 之间的差异很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58846088/

相关文章:

C 从链表中删除节点

c - 如果我使用 GPA 指针,为什么在使用 scanf ("%lf", GPA) 时会出现段错误,如果不是指针,则在使用 scanf ("%lf", &GPA) 时会出现段错误?

c - 初始化 - C 中的多维数组

ios - 将数组元素与预定义值进行比较时出错?

javascript - Mongoose 查找并创建多维数组

c++ - 为什么迭代器没有到达 vector 的末尾?

java - JNA 通过引用传递结构帮助

c - 如何输入要打开的文件名?

java - 提高 for-each 性能

c - C 中的指针递增