一级指针和二级指针的区别与应用

一级指针:

就是指针,即一个指向一块内存的地址,有了这个地址,我们就可以对这块内存进行读写操作

一级指针和二级指针的区别与应用_第1张图片

 二级指针:

指针的指针,也就是指向一块内存的指针的地址,因为指针本身也有自己的存储地址,有了指针的地址,我们就可以对这个指针进行操作,比如改变它的指向,让它从新指向另一块内存。

应用:

一般函数调用时,调用者开闭好内存空间了,那么只要把内存的一级指针传到函数里,我们就可以对这块内存里的数据进行读写的操作,如果调用者不开辟内存,它想从被调用的函数里拿到一块内存,那就需要传一个二级指针到函数里,然后被调用的函数,改变这个指针的指向,指向函数内申请的内存,那么调用者调用函数后,就可以获得了一块内存

#include 
using namespace std;

void readData(int *data) //data 一级指针
{
    cout<< "the data value: " << *data <

一级指针和二级指针的区别与应用_第2张图片

#include

#include

void alloc_new_char_array(int n,char** t) //二级指针

{

    *t=(char*)malloc(n*sizeof(t));

    std::cout << "通过二级指针修改一级指针指向后, ";

    strcpy(*t,"abc");

}

void alloc_new_char_array(int n,char* t) //一级指针

{

    t=(char*)malloc(n*sizeof(t));

    std::cout << "通过一级指针修改指针指向后, ";

    strcpy(t,"abc");

}

int main() {

    char* t = NULL;

    alloc_new_char_array(5, t);

    if (NULL == t)

    {

           std::cout << "一级指针的指向没有变,还是NULL"<< std::endl;

    }

    alloc_new_char_array(5, &t);

    std::cout << "一级指针的指向改变了,指向了函数内申请的内存: "<< t <

    return 0;

}

你可能感兴趣的:(c语言,c++,leetcode,算法,c++,内存管理,指针)