char *a[ ]
a[0] huan\0 a[1] xi\0 a[2] shan\0 数组中的内容为指针,指针指向其相应的字符串
char a[ ][ ]
a[0] huan\0 a[1] xi\0 a[2] shan\0 数组中存放的是相应的字符串
在课程的讨论区看到的,就记了下来。刚开始的时候没有注意到这个问题,后来自己思考的太少了
#include <stdio.h> int main(int argc,char *argv[]) { const char *b[]={"wo","xi","huan","ni","li"}; int a; scanf("%d",&a); printf("%s",b[a-1]); return 0; }
数组的名字可以认为是指向数组首地址的指针,所以对于一个字符串(字符数组),char *str = "Hello"; 可以用printf("%s", str);输出。字符串数组的话,因为每一项都是一个字符数组,所以对于这个例子,用printf("%s", a[0]);可以输出January。如果将其解引用的话,*(a[0]),那么就会输出a[0]字符串的第一个字符J,因为是字符了,所以用%c输出,写做printf("%c", *(a[0])); 注意这里*的优先级更高,要加括号。
int main(int agrc,char *argv[])
前面的整数是统计字符串的数量,后面的字符串指针数组用来保存文件路径,目前学的知识有限,也只能理解到这里。
#include <stdio.h> int main(int argc,char *argv[]) { int i; for(i=0;i<argc;i++){ printf("%d;%s",i,argv[i]); } return 0; }