C语言从头学32——字符串数组

关于字符串数组的声明方式,介绍两种:
1、二维数组方式
       如果一个数组的每个成员本身也是字符串,那就需要通过二维的字符数组来表示。每个字符串本身是一个字符数组,多个字符串再组成一个数组。如下例:
       char num[10][6]={"one","two","three","four","five","six","seven","eight","nine","ten"};
       上面的字符串数组包括包括10个成员,故一维声明为10,由于编译器可以自行计算一维 (可看做行) 成员个数,故10可以不写。10个成员中,字母最多的成员是"three"和"seven"都是5个字母再加上结尾"\0"是6,故二维 (可看做列) 声明为6。
2、char* 型一维数组方式
       数组的维度同二维数组的一维维度概念一致,都是相当于 "行" 的概念,行尾不涉及 "\0" 结束符;成员都是指针类型的字符串或者说是指向字符串的指针。行尾的 "\0" 编译器自动加上,不用我们考虑。这种声明方式形式简单一些,客观上也比前面的方式节省一些内存空间。把上例挪下来,可以这样声明:
       char* num[10]={"one","two","three","four","five","six","seven","eight","nine","ten"};
3、附上两种声明方式的字符串数组的遍历程序:
      a.二维数组方式

#include<stdio.h>
int main(void)
{
    char num[10][6] = { "one","two","three","four","five","six","seven","eight","nine","ten" };
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            char temp = num[i][j];
            if (temp != '\0')printf("%c",num[i][j]);
        }
        printf(" ");
    }
    printf("\n");
    getchar();
}

    运行结果:one two three four five six seven eight nine ten

    b.指针型一维数组方式

#include<stdio.h>
int main(void)
{
    const char* num[10] = { "one","two","three","four","five","six","seven","eight","nine","ten" };
    //由于编译器原因,这些10个指针都指向字符串常量,所以char*前面也要加上const。加上const后,指针指向的常量不可修改:
    //比如把"one"中的"o"改成"a"-> num[0][0]='a';编译器会报错。但若把指针指向另一个常量,是允许的,如num[0]="zero";可以。
    for (int i = 0; i < 10; i++)
    {
        printf("%s ", num[i]);
    }
    printf("\n");
    getchar();
}

   运行结果:one two three four five six seven eight nine ten

相关推荐

  1. C语言从头32——字符串数组

    2024-07-10 22:38:09       32 阅读
  2. C语言从头30——字符串

    2024-07-10 22:38:09       23 阅读
  3. C语言从头35——struct结构

    2024-07-10 22:38:09       24 阅读
  4. C语言从头31——与字符串变量相关的几个函数

    2024-07-10 22:38:09       28 阅读
  5. C语言从头33——内存管理(一)

    2024-07-10 22:38:09       28 阅读
  6. C语言从头16——数据类型(二)

    2024-07-10 22:38:09       32 阅读
  7. C语言从头15——数据类型(一)

    2024-07-10 22:38:09       29 阅读
  8. C语言从头01——入门程序

    2024-07-10 22:38:09       32 阅读
  9. C语言从头17——sizeof 运算符

    2024-07-10 22:38:09       28 阅读
  10. C语言从头20——指针

    2024-07-10 22:38:09       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 22:38:09       100 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 22:38:09       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 22:38:09       90 阅读
  4. Python语言-面向对象

    2024-07-10 22:38:09       98 阅读

热门阅读

  1. 7. 有奖猜谜

    2024-07-10 22:38:09       26 阅读
  2. 关于redis的运维面试题-2

    2024-07-10 22:38:09       23 阅读
  3. socketserver和WSGI服务端实现教程

    2024-07-10 22:38:09       28 阅读
  4. 数组常用的方法

    2024-07-10 22:38:09       23 阅读
  5. 设计模式实现思路介绍

    2024-07-10 22:38:09       33 阅读
  6. EventBus原理分析

    2024-07-10 22:38:09       26 阅读
  7. Modelsim中使用tcl命令导出仿真数据到txt文件

    2024-07-10 22:38:09       28 阅读