与C中的数组大小混淆

时间:2017-03-02 15:03:37

标签: c arrays pointers sizeof

为什么sizeof(array [0])在其中包含17个字符/字节时返回大小为8?

#include <stdlib.h>
#include <stdio.h> 

int main  () {

  char* array [2] = {"12345678912345678","12345678"};
  int a = sizeof  (array [0]);

  fprintf (stdout, "%s , %d \n", array [0], a);

  return 0;
}

返回:

12345678912345678 , 12345678

2 个答案:

答案 0 :(得分:0)

要获取存储的实际字符串的长度,请使用

printf("%lu", strlen(array[0]));

这会给17

确保包含<string.h>标题。

答案 1 :(得分:0)

sizeof(array [0])返回指针的大小,这取决于您的系统。使用strlen()函数获得预期的输出。

  int a = strlen(array [0]);