10.1.4 字符串数组,以及程序参数

1.如果你想写一个数组去表达很多字符串,那应该怎么做呢?

  • char **a 可以吗?这是什么意思?它的意思是,定义了一个指向了一个指向字符(串)的指针a,也就是一个二级指针.所以它不是我们要的字符串数组.
  • char a[ ][ ] 可以吗?(第二位一定要有确切数字)这又是什么意思?它的意思是定义了一个二维数组,这里面的每个a[ ]都是一个含有第二个[ ]数量的字符数组.用这种方式写的时候,你需要确定这当中每一个字符串的长度,比如这个数量是10,当你超过这个10,程序就会出错.老师的编译器给的是warning,而我用dev c++直接给了个error.

我们把其中一个[ ]拿掉,再在a前面加上*----char *a[ ].a[0]->char*.这两种形式是不一样的:

所以看完字符串数组,你还记不记得我们曾经在讲到switch case的时候, 我们看过这样一个例子:我们要根据输入月份的那个数字来输出对应月份的英文单词.

我们当时留了一句话,今后可以用数组来做.代码如下:

#include<stdio.h>
int main(){
    int i=1;
    const char *month[13]={"0","January","February","March","April","May","june","July","August","September","October","November","December"};//这里第一个0起的作用是占位符,如果没有const也能运行,但会有warning.
    scanf("%d",&i);
    printf("%s",month[i]);
    return 0;    
}

2.程序参数

argc和argv是C和C++中用于处理命令行参数的两个常见变量.它们可以在main函数中作为参数传递.我们可以试一下以下的代码,对于这个内容不再深入探讨:

#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("argc is %d\n",argc);
    for(int i=0;i<argc;i++)
    {
        printf("argv[%d] is: %s\n",i,argv[i]);    
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值