三:C语言基础复习--指针(指针常量,常量指针,指针数组,数组指针)

一:指针常量

概念:指针指向的地址不可改变,但是可以通过指针改变指向地址的值。

二:常量指针

概念:指针指向的地址是一个常量,不可通过指针改变,但是指针可以改变指向。

三:指针数组

概念:由指针构成的一个数组。

1.指针数组案例(一)

#include<stdio.h>
#include<string.h>

//要求:输入10个字符串,请打印最长的字符串

int main()
{
    char *section[10];
    int longest_index=0;
    for(int i=0;i<10;i++)
    {
        scanf("%s",section[i]);
        if(longest_index<strlen(section[i])
            longest_index=i;
    }
    printf("%s",section[i]);
    return 0;
}

四:数组指针

概念:指向一个数组大小固定的指针。

1.数组指针案例(一)

#include<stdio.h>
#include<string.h>

//要求:使用数组指针操作二维数组

int main()
{
    int array[10][10];
    int i,j;
    for(i=1;i<=10;i++)
    {
        for(j=1;j<=10;j++)
        {
            array[i-1][j-1]=i*j;
        }
    }
    
    
    //p指针指向了一个行大小固定的数组,所以可以用来指向一个二维数组
    int (*p)[10]=array;
    for(i=0;i<10;i++)
    {
        //1.可以在这里成成p=p[i];或标记2
        for(j=0;j<10;j++)
        {
            //将p的转换成整形,即地址,强转为int*,则就可以操作元素了。
            int *t = (int*)((int)*p+sizeof(int)*j);
            printf("%6d,",*t);
            //这里也可以使用p[i][j]
        }
        
        //2.这里的p++实际上是p+sizeof(int[10])
        p++;
        printf("\n");
    }

    return 0;
}

猜你喜欢

转载自www.cnblogs.com/running-world/p/11572949.html