Skip to content

字符串数组的定义

C
// 方式一:必须指定第二维的大小,且应大于等于数组最长字符串的长度
char str_arr1[][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; 
// 方式二
char *str_arr2[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

求字符串数组的长度

C
#include <stdio.h>

int main()
{
  void travel_str_array(void);
  travel_str_array();
  return (0);
}

void travel_str_array(void)
{
  unsigned char i = 0, size = 0;

  char *str_arr[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

  // sizeof(str_arr[0]) 这不是字符串 "Monday" 的大小,而是存储指向字符串 "Monday" 的地址所需的空间大小。
  // sizeof(数组名) = 数组中元素的个数 * 每个元素的大小
  // 在大多数系统上,一个指针的大小是8字节(64位系统)
  size = sizeof(str_arr) / sizeof(str_arr[0]); // 获取数组大小
  for (i = 0; i < size; i++)
  {
    printf("%s\n", *(str_arr + i));
  }
}

字符串数组的遍历

C
#include <stdio.h>

int main()
{
  char str_arr1[][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; 

  unsigned char i = 0;
  for(i=0;i<7;i++)
  {
    printf("%s",str_arr1[i]);
  }
  return (0);
}