zoukankan      html  css  js  c++  java
  • 指向指针的指针

    指针是c语言的一大利器,可以用他直接对内存进行操作;最近犯了一个大的错误:试图向函数传递一个指针参数,返回函数内部分配的对象的地址;实验证明这种用法是错误的;正确的用法是:把该指针的地址传递给函数,即使用指针的指针,然后用指针的间接引用符‘*’,直接对该指针的内存进行操作;

    总结如下:

    1.对基本的数据类型(int,char),可以直接传递指针给函数,用*+地址,直接对该内存进行操作;

    2.对指针的类型,如果想对指针赋值,改变该指针的内容,则须用指向指针的指针;对该地址进行操作;分析代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct 
    {
        int a;
        int b;
    }node;
    /*
    void createnode(node * pn)//pn为临时变量,操作结果只在本函数中有效不能返回, 本例中只对pn进行操作,对调用中的pnode 无效;有去无回
    {
        pn = (node *)malloc(sizeof(node));
        pn->a = 100;
        pn->b = 10;
    }*/
    
    /*c语言可以直接对内存进行操作,操作的结果必须保存在可用的内存中才有效*/
    /*指针的指针,指向一个地址,指针的内容为指针的地址;可以直接对指针的内容进行操作(*pn),把操作结果返回*/
    void createnode(node ** pn)
    {
        if(*pn == NULL)
            printf("NULL\n");
        (*pn) = (node *)malloc(sizeof(node));
        (*pn)->a = 100;
        (*pn)->b = 10;
    }
    int main()
    {
        node *pnode = NULL;
        createnode(&pnode);
        printf("%d\n", pnode->a);
        return 0;
    }
  • 相关阅读:
    了解一些常用的牛逼编译器(不限制编程语言, 不限制平台)
    Linux下的常用文本编辑器
    linux下一些重要命令的了解
    linux学习笔记(二:权限)
    liunx学习笔记(一:常用命令)
    文件操作相关的函数总结
    关于动态内存malloc和realloc
    实现一个简易的通讯录
    qsort函数排序各种类型的数据。
    结构体总结
  • 原文地址:https://www.cnblogs.com/linengier/p/3031259.html
Copyright © 2011-2022 走看看