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;
}