数组指针、二级指针传参

news/2025/2/21 20:02:23/

void test(int **p){}//二级指针接受
int main()
{
    int a = 0;
    int* p = &a;
    int** pp = &p;
    int* arr[10] = { 0 };
    test(pp);//二级指针传参
    test(&p);//一级指针的地址
    test(arr);//指针数组,存放指针地址的数组
    return 0;
}
//void test(int arr[][5])
//{}//arr[][] arr[3][]  错误写法  err
//void test(int (*arr)[5])
//{}//int *arr  int **arr int *arr[5] 错误写法,类型不兼容
//int main()
//{
//
//    int arr[3][5] = { 0 };
//    test(arr);//二维数组传参,传的是第一行数组的地址
//    return 0;
//}
//int main()
//{
//    int arr[5];//是一个五个元素的整型数组 
//    int* parr[10];//是一个10个元素的int*指针数组
//    int(*parr2)[10];//是一个指向10个int整型元素的数组指针
//    int(*parr3[10])[5];//是一个十个数组指针,且每个指针指向五个int整型元素的数组
//    return 0;
//}
//int main()
//{
//    int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//    int i = 0;
//    int* p = arr;
//    for (i = 0; i < 10; i++)
//    {
//        printf("%d ", arr[i]);
//        printf("%d ", *(p + i));
//        printf("%d ", *(arr+i));
//        printf("%d ", p[i]);
//
//        //arr[1] == *(arr+i) == *(p+i) == p[i]
//    }
//    return 0;
//}
//void print1(int arr[][5], int x, int y)
//{
//    int i, j = 0;
//    for (i = 0; i < x; i++)
//    {
//        for (j = 0; j < y; j++)
//        {
//            printf("%d ", arr[i][j]);
//        }
//        printf("\n");
//    }
//}
//void print2(int(*p)[5], int x, int y)
//{
//    int i = 0;
//    for (i = 0; i < x; i++)//行
//    {
//        int j = 0;//列
//        for (j = 0; j < y; j++)
//        {
//            //printf("%d ", *(*(p + i) + j));
//                //*(p+i) 表示第几行,
//                //(*(p+i)+j)表示第i行第j列的元素
//                //*解引用
//            //printf("%d ", *(p + i)[j]);
//            printf("%d ", p[i][j]);
//
//        }
//        printf("\n");
//    }


http://www.ppmy.cn/news/96882.html

相关文章

【Linux】可重入VS线程安全

文章目录 概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别 概念 线程安全&#xff1a; 多个线程并发同一段代码时,不会出现不同的结果 常见对全局变量或者静态变量进行操作,并且没有锁保护的…

聊聊如何使用Js写一个简单的二级联动和三级联动呢?

前言&#xff1a;咳咳哈&#xff0c;大佬说&#xff1a;"这不是有手就行了&#xff1f;"好吧&#xff0c;这里不做过多罗里吧嗦&#xff0c;真的不过多吹&#xff0c;我们在下面直接上代码上注释。 文章目录&#xff1a; 原Js二级联动实现原Js三级联动实现 一、二级…

List Set Map Queue Deque 之间的区别是什么?

List Set Map Queue Deque 之间的区别是什么&#xff1f; 1. Java 集合框架有那些接口&#xff1f;2. List Set Map Queue Deque 之间的区别是什么&#xff1f; 1. Java 集合框架有那些接口&#xff1f; List、Set、Map、Queue、Deque 2. List Set Map Queue Deque 之间的区别…

Spring学习记录

目录 工厂模式的三种形态 简单工厂模式 代码&#xff1a; 运行结果&#xff1a; 总结&#xff1a; 工厂模式 代码&#xff1a; 运行结果&#xff1a; 总结&#xff1a; 抽象工厂模式 代码&#xff1a; 运行结果&#xff1a; 总结&#xff1a; bean的单例与多例 设置 …

Eureka 服务注册源码探秘——图解、源码级解析

&#x1f34a; Java学习&#xff1a;社区快速通道 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年5月2日 &#x1f34a; 点…

《Spring Guides系列学习》guide61 - guide65

要想全面快速学习Spring的内容&#xff0c;最好的方法肯定是先去Spring官网去查阅文档&#xff0c;在Spring官网中找到了适合新手了解的官网Guides&#xff0c;一共68篇&#xff0c;打算全部过一遍&#xff0c;能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gui…

第二章--第五篇:对话系统的挑战和限制

对话系统作为人机交互领域的重要研究方向&#xff0c;在现实生活和技术领域具有广泛的应用。它的重要性体现在以下几个方面。 首先&#xff0c;对话系统能够提供自然、直观的人机交互方式。传统的人机交互方式主要依靠键盘、鼠标等输入设备&#xff0c;但对于一些用户&#xff…

学校食堂明厨亮灶 yolov8

学校食堂明厨亮灶可以yolov8网络模型技术&#xff0c;学校食堂明厨亮灶通过对厨师的穿戴情况行为举止等进行监测。YOLOv8 算法的核心特性和改动可以归结为如下&#xff1a;提供了一个全新的 SOTA 模型&#xff0c;包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的…