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