• 关于void在指针的应用:

    void表示“无类型”,void *表示无类型指针。在定义指针的时候,必须声明指针的类型,因为类型决定了指针移动的字节数。

    例:

    1
    2
    3
    4
    5
    6
    7
    double d=3.14;
    double *dptr=&d;
    int *iptr=dptr; //错误,double和int占用不同的字节,编译报错。

    double d=3.14;
    double *dptr=&d;
    void *vptr=dptr //正确,无类型指针可以接受任何类型的指针。
  • main(int argc,char *argv[ ])

    1.argc为整数

    2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][] ,argv是一个指针数组)

    3.下面给出一个例子来理解这两个参数的用法:

     假设程序的名称为prog,

    当只输入prog,则由操作系统传来的参数为:

    argc=1,表示只有一程序名称。

    argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog

    当输入prog para_1,有一个参数,则由操作系统传来的参数为:

    argc=2,表示除了程序名外还有一个参数。

    argv[0]指向输入的程序路径及名称。

    argv[1]指向参数para_1字符串。

    当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:

    argc=3,表示除了程序名外还有2个参数。

    argv[0]指向输入的程序路径及名称。

    argv[1]指向参数para_1字符串。

    argv[2]指向参数para_2字符串。

    4.举例如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     1 /*************************************************************************
    2 > File Name: read_main_param.c
    3 > Author: Mr.Yang
    4 > Purpose:读取主函数中的参数
    5 > Created Time: 2017年06月01日 星期四 09时46分38秒
    6 ************************************************************************/
    7
    8 #include <stdio.h>
    9 #include <stdlib.h>
    10
    11 int main(int argc,char *argv[])
    12 {
    13 printf("%s\n",argv[0]);//读取可执行程序(包括路径)
    14
    15 /*读取参数*/
    16 int i = 1;
    17 while(i < argc)
    18 {
    19 printf("%s\n",argv[i]);
    20 i++;
    21 }
    22 //说明在dos和unix环境下,用""扩起来的表示其是一个字符串,代表着一个参数
    23 return 0;
    24 }