5.二级指针

夜行过客 夜行过客     2022-08-30     499

关键词:

 一.二级指针的输入模型

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

#pragma warning(disable:4996)


int printArray(char **pArray, int num)
{
    if (pArray == NULL)
    {
        return -1;
    }
    int i = 0;
    for (i = 0; i < num;i++)
    {
        printf("myArray[%d] = %s\n", i, pArray[i]);
    }
    return 0;
}


void main() {


    int i = 0, j = 0;
    char *temp = NULL;
    char * myArray[] = {"aaaaa","bbbbb","ccccc","1111111111"};

    printf("打印前......\n");

    /*for (i = 0; i < 4; i++)
    {
        printf("myArray[%d] = %s\n",i,myArray[i]);
    }*/
    
    printArray(myArray,4);


    for (i = 0; i < 4; i++)
    {
        for (j = i + 1; j < 4; j++)
        {
            if (strcmp(myArray[i], myArray[j]) > 0)
            {
                temp = myArray[i];
                myArray[i] = myArray[j];
                myArray[j] = temp;
            }
        }
    }


    printf("打印后......\n");

    /*for (i = 0; i < 4; i++)
    {
        printf("myArray[%d] = %s\n", i, myArray[i]);
    }*/
    printArray(myArray, 4);

    
    system("pause");

}

打印结果:

二.一级指针的技术推演

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

#pragma warning(disable:4996)


int getLen(int *p)
{
    *p = 40;
}

void main()
{
    int a = 0;
    int *p = NULL;

    // 直接修改a的值
    a = 10;
    printf("a:%d\n",a);

    p = &a;
    *p = 20;
    printf("a:%d\n",a);

    getLen(p);
    printf("a:%d\n",a);

    system("pause");
}

输出:

三.二级指针的技术推演

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

#pragma warning(disable:4996)


int getMem3(char **p)
{
    *p = 200;
    *p = (char *)malloc(1000); // *p 指向的是一个新分配的内存块的地址
    return 0;
}

void main()
{
    char *p = NULL;
    
    // 不断给指针变量赋值,相当于不断的修改指针的指向
    p = 0x1;
    p = 2;
    p = 3;

    getMem3(&p);
    printf("p:%d\n",p);

    system("pause");
}

 

二级指针作为形参的套路(代码片段)

//通常主函数会这么调用:intmain()int*a=NULL;//此处传入的是指针的地址,也就是指针的指针getNum(&a);return0;voidgetNum(int**a)//在这里,我们假设要传回一个size为5的a*a=(int*)malloc(sizeof(a)*5);for(inti=0;i<5;i++)(*a)[i]=i;  查看详情

关于二级指针与一级指针相互转换的问题!

哪位高手给举个简单的例子,二级指针可以当做指针数组么?/*可以啊……*/#include<stdio.h>voidprint(int(*a)[5])inti,j;for(i=0;i<5;i++)for(j=0;j<5;j++)printf("%d\t",a[i][j]);printf("\n");intmain(intargc,char*argv[])intarr[5][5];printf... 查看详情

c语言结构体(结构体中嵌套二级指针|为结构体内的二级指针成员分配内存|释放结构体内的二级指针成员内存)(代码片段)

文章目录一、结构体中嵌套二级指针1、结构体中嵌套二级指针类型声明2、为结构体内的二级指针成员分配内存3、释放结构体内的二级指针成员内存二、完整代码示例一、结构体中嵌套二级指针1、结构体中嵌套二级指针类型声... 查看详情

c语言二级指针内存模型(指针数组|二维数组|自定义二级指针|将一二模型数据拷贝到三模型中并排序)(代码片段)

文章目录一、指针数组和二维数组数据拷贝到自定义二级指针中1、函数形参设计规则2、三种内存模型对应函数形参指针退化规则二、完整代码示例一、指针数组和二维数组数据拷贝到自定义二级指针中将指针数组和二维数组中... 查看详情

c二级指针3种内存分配

//#include"stdafx.h"#include<stdio.h>#include<stdlib.h>#include<string>/**实现二级指针*author:whish*////1.直接分配在栈上通过char[][]方式intmainStack(){ chararray[3][5]={{‘q‘,‘w‘,‘e‘,‘r‘,‘b‘},{‘a‘,‘s‘ 查看详情

06指针.(代码片段)

...针4.3指针的关系运算4.4指针的解引用操作5.指针和数组6.二级指针 7.指针数组1.本章重点1.指针是什么2.指针和指针类型3.野指针4.指针运算5.指针和数组6.二级指针 查看详情

指针与数组(代码片段)

二级指针、指针数组、数组指针指针和数组的关系二级指针指针数组与数组指针指针数组的定义数组指针的定义举例指针和数组的关系通过上一篇文章指针的原理——地址、内存我们知道,数组名表示的其实是数组首元素的... 查看详情

c语言中如何通过二级指针来操作二维数组

...输出。5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组。参考技术A通过二级指针去访问二维数组需要先给二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位... 查看详情

二级指针的传递和应用

...;iostream>usingnamespacestd;/*最近在写一个程序的时候用到了二级指针作为函数参数的情况,就在函数内部如何操作二级指针为数组做以下探讨:无非有两种使用方式a[i][j]or*((type*)a+i*col+j);先看下面的测试源码:*/voidtest(intcol,double**... 查看详情

02指针进阶(代码片段)

...数5.1一维数组传参5.2二维数组传参 5.3一级指针传参 5.5二级指针传参6.函数指针7.函数指针数组8.指向函数指针数组的指针9.回调函数1.本章重点1.字符指针2.数组指针3.指针数组4.数组传参和指针传参5.函数指针6.函数指 查看详情

c语言提高内容目录

...作字符串一级指针内存模型图字符串做为函数参数(3)二级指针多级指针二级指针的输入输出模型二级指针输入的三种内存模型多级指针的使用(4)数组一维数组 二维数组数组类型 数组指针类型数组指针类型变量多维... 查看详情

从一级指针到二级指针

...,写了一些关于一级指针的见解,那么这次我们再来看看二级指针的一些用法,也可以说是我自己的一些见解  所谓二级指针其实和一级指针差不多,一级指针是存储0级指针地址的变量,(一定要记住这一点:指针也是变量... 查看详情

c语言二级指针应用详解(代码片段)

文章目录二级指针概念二级指针应用之一:删除链表的结点二级指针应用之二:删除链表中的重复元素更多应用等待探索...二级指针概念普通的指针变量,实际上就是存储值类型的地址,这被称为一级指针。而二... 查看详情

c语言二级指针作为输入(自定义二级指针内存|二级指针排序|抽象业务逻辑函数)(代码片段)

文章目录一、二级指针排序(抽象业务逻辑函数)1、生成二级指针函数2、打印二维指针函数3、二维指针排序函数4、释放二维指针函数二、完整代码示例一、二级指针排序(抽象业务逻辑函数)1、生成二级指针函数首先,为一维指针... 查看详情

c语言二级指针案例(字符串切割|返回自定义二级指针作为结果)(代码片段)

文章目录一、二级指针案例(返回自定义二级指针)二、完整代码示例一、二级指针案例(返回自定义二级指针)上一篇博客【C语言】二级指针案例(字符串切割|返回二维数组作为结果)中,使用的是二维数组,接收字符串切割结果;本篇... 查看详情

二级指针补充

  昨天对于分享了一些关于二级指针的见解,但是我感觉还是要对其在进行补充一下比较好,当时我在二级指针这方面迷糊了很久,即使是现在有时候也会犯迷糊;  当初我学二级指针的时候认为,一级指针必须指向了一个... 查看详情

c语言二级指针作为输出(指针输入|指针输出|二级指针作为函数形参使用示例)(代码片段)

文章目录一、二级指针二、完整代码示例一、二级指针指针作为函数输入:调用者负责分配内存;指针作为函数输出:函数负责分配内存,一般传入二级指针,函数负责生成内存,并使用二级指针指向一级指针,一级指针指向在函数中分... 查看详情

c真正理解二级指针

...针方面的问题,想了许久,因此我觉得很有必要复习一下二级指针及其使用  正文如下:    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结... 查看详情