假设我有一个大小相同的字符串数组。
char strings[][MAX_LENGTH];
strlen(strings)
和 strlen(*strings)
之间有什么区别?
我知道 strings
本身就是数组中第一个字符串的地址,
但是*strings
是什么?
最佳答案
首先,不要这样做。 C 会让你做很多坏主意的事情。这并不意味着你应该这样做。 :)
虽然您可能会收到编译器警告,但这两者实际上是相同的。原因是用这个定义:
char strings[][MAX_LENGTH];
对此的分配最终将成为一个连续的 block 。在该内存块内,没有可用于识别各个字符串开始和结束位置的“结构”或管理设备。这创造了一个有趣的情况。
实际上,*string
和 string
都是指向完全相同的内存位置的指针。这意味着对其中任何一个调用 strlen
将返回第一个数组中第一个元素的 null 分隔字符串长度。
但是,我必须重申...不要这样做。
关于c - strlen(string) 和 strlen(*string) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278778/