C指针数组做参数

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:13:22
int main(int argc, char ** argv);里面为什么可以对argv进行++操作了,既然“main函数的第二个形参是一个指向字符串的指针数组”,argv出现在函数声明中,所以它实际上是一个指针,它并不是“一个指向字符串的指针数组”,而是一个可以获取“一个指向字符串的指针数组”的首地址值的变量。

而是一个可以获取“一个指向字符串的指针数组”的首地址值的变量。

这句话解释下!具体指的是什么,举下例子!

不必理睬书上的咬文嚼字。只要记住
main(int argc, char ** argv){。。。}
是用来传递命令行程序名和 位置参数到主程序里用的。
声明 char **argv 与 声明 char *argv[] 是一样的。

argv[0] 里放的是程序名,argv[1],argv[2]...里放的是命令行位置参数。argc 是 程序名+参数的个数

例如程序:
#include <stdio.h>
#include <stdlib.h>
// void main(int argc, char *argv[]) // 或者
void main(int argc, char **argv)
{
char prog_name[32], p1[32],p2[32];
strcpy(prog_name, argv[0]);
if (argc >=3){
strcpy(p1, argv[1]);
strcpy(p2, argv[2]);
printf("%s\n%s\n%s\n",prog_name,p1,p2);
} else printf("%s\n",prog_name);
}

例如编译后的程序叫 abc.exe
命令行打入: abc 123 456
输出:
abc
123
456

......
多简单的事
在C里面指针是默认为int存储的
指向指针的指针就是说这个指针指向的值是一个指针
比如int **p
p是一个指针,它指向了一个int型的指针
*p就是这个int型的指针
**p就是这个int值
至于主函数里的参数char ** argv或者char *argv〔〕
argv指向了一个char*指针的数组
数组里每个元素是一个char*的指针,分别指向一个字符串