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;
    }
  • 相关阅读:
    MVC,KVO,KVC的简单认识
    Objective-C之集合对象
    Objective-C之词典对象
    Objective-C之数组对象
    Objective-C关键字static
    IOS做天气预报
    同步和异步GET,POST请求
    iOS开发常用的开源库和示例
    KVC KVO KVB
    iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)
  • 原文地址:https://www.cnblogs.com/linengier/p/3031259.html
Copyright © 2011-2022 走看看