与 C 中的数组大小混淆

Confusion with array size in C

为什么 sizeof (array [0]) return 有 17 characters/bytes 时大小为 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;
}

Returns:

12345678912345678 , 12345678

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

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

这给出 17

确保包含 <string.h> header.

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

  int a = strlen(array [0]);