gpt4 book ai didi

c - strlen(string) 和 strlen(*string) 之间的区别

转载 作者:行者123 更新时间:2023-11-30 21:01:36 26 4
gpt4 key购买 nike

假设我有一个大小相同的字符串数组。

char strings[][MAX_LENGTH];

strlen(strings)strlen(*strings) 之间有什么区别?

我知道 strings 本身就是数组中第一个字符串的地址,

但是*strings是什么?

最佳答案

首先,不要这样做。 C 会让你做很多坏主意的事情。这并不意味着你应该这样做。 :)

虽然您可能会收到编译器警告,但这两者实际上是相同的。原因是用这个定义:

char strings[][MAX_LENGTH];

对此的分配最终将成为一个连续的 block 。在该内存块内,没有可用于识别各个字符串开始和结束位置的“结构”或管理设备。这创造了一个有趣的情况。

实际上,*stringstring 都是指向完全相同的内存位置的指针。这意味着对其中任何一个调用 strlen 将返回第一个数组中第一个元素的 null 分隔字符串长度。

但是,我必须重申...不要这样做。

关于c - strlen(string) 和 strlen(*string) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278778/

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