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

时间:2016-02-08 20:33:33

标签: c string pointers

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

char strings[][MAX_LENGTH];

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

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

但是什么是*strings

1 个答案:

答案 0 :(得分:1)

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

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

char strings[][MAX_LENGTH];

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

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

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