字体
第(2/6)页
关灯
   存书签 书架管理 返回目录
"%d,",*a);

    printf("%d,",a[0]);

    printf("%d,",&a[0]);

    printf("%d\n",&a[0][0]);

    printf("%d,",a+1);

    printf("%d,",*(a+1));

    printf("%d,",a[1]);

    printf("%d,",&a[1]);

    printf("%d\n",&a[1][0]);

    printf("%d,",a+2);

    printf("%d,",*(a+2));

    printf("%d,",a[2]);

    printf("%d,",&a[2]);

    printf("%d\n",&a[2][0]);

    printf("%d,",a[1]+1);

    printf("%d\n",*(a+1)+1);

    printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1));

    }

    2. 指向多维数组的指针变量

    把二维数组 a 分解为一维数组 a[0],a[1],a[2]之后,设 p 为指向二维数组的指针变量。

    可定义为:

    int (*p)[4]

    它表示 p 是一个指针变量,它指向包含 4 个元素的一维数组。若指向第一个一维数组

    a[0],其值等于 a,a[0],或&a[0][0]等。而 p+i 则指向一维数组 a[i]。从前面的分析可得

    出*(p+i)+j 是二维数组 i 行 j 列的元素的地址,而*(*(p+i)+j)则是 i 行 j 列元素的值。

    二维数组指针变量说明的一般形式为:

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    类型说明符  (*指针变量名)[长度]

    其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示

    二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。应注意“(*指

    针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完

    全不同了。

    【例 10.23】

    main(){

    int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

    int(*p)[4];

    int i,j;

    p=a;

    for(i=0;i<3;i++)

    {for(j=0;j<4;j++) printf("%2d  ",*(*(p+i)+j));

    printf("\n");}

    }

    10.4 字符串的指针指向字符串的针指变量

    10.4.1 字符串的表示形式

    在 C 语言中,可以用两种方法访问一个字符串。

    1) 用字符数组存放一个字符串,然后输出该字符串。

    【例 10.24】

    main(){

    char string[]=”I love China!”;

    printf("%s\n",s
上一页 目录 下一页