专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

数组指针&指针数组 数组指针的使用

ins518 2024-09-30 21:26:46 技术文章 15 ℃ 0 评论
int* p1[5];

因为[]的优先级高于*,所以p1先与[]结合,p1[5]:定义一个长度为5的数组,数组名为p1,int*修饰的是数组的内容,即数组中每个元素的类型。这条语句的完整解读是声明一个包含5个指向int指针类型的数组,数组名为p1;

int (*p2)[5];

*和p2被()扩起来,表示*和p2先结合,*p2此时表示定义了一个指针变量,指针变量名为p1,int (*p2) [5];就表示p2指针变量指向一个包含了5个指向int类型的数组,很明显p2是一个数组指针,这里没有给出数组名,也不需要给出数组名,是个匿名数组,可以直接通过数组指针操作数组。

		int total = 0;
    printf("请输入数组长度:\n");
    scanf("%d",&total);
    int s[total];
    printf("向数组输入%d个整数\n",total);
    for(int i=0;i<total;i++) {
        scanf("%d",&s[i]);
    }
    printf("打印数组元素");
    for(int i=0;i<total;i++) {
        printf("%d ",s[i]);
    }
    printf("\n");
    printf("--------------------------------\n");
    //定义一个数组指针
    int (*p)[total];
    p = &s;
    for(int i=0;i<total;i++) {
        printf("第%d个元素是:%d\n",i+1,*(*p + i));
    }
    printf("--------------------------------\n");
    int length = total-1;
    printf("《模拟栈先进后出》\n");
    while (length >= 0) {
        printf("%d    ",*(*p + length));
        --length;
    }
    printf("\n");
    printf("--------------------------------\n");
    int index = 0;
    printf("《模拟队列先进先出》\n");
    while (index < total) {
        printf("%d    ",*(*p + index));
        ++index;
    }
    printf("\n");
    //i--是先使用i的值,再执行i=i-1操作;--i是先执行i=i-1操作,再使用i的值

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表