• 指向指针的指针


    指针是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;
    }
  • 相关阅读:
    Python中re(正则表达式)模块学习
    Django(第一次使用心得,及总结)
    Lunix 安装VMware tools
    主键自动生成办法
    常用的android弹出对话框
    JDBC_mysql---防sql注入,存储图片
    java实现md5加密
    sql语句批量处理Batch
    连接mysql数据库2+操作入门
    Oracle事物基础
  • 原文地址:https://www.cnblogs.com/linengier/p/3031259.html
Copyright © 2020-2023  润新知