• 数据结构实用C语言基础


    大纲:

      主要介绍了C语言中的指针,内存分配,两种传参方式,typedef的简单用法

    关于C语言中的指针:

      指针变量也称为指针(Pointer)

      例如:int* p; 则p为一个指向int类型的指针.

      p保存的值是它所指向的int类型的值的地址.

      如果我们在声明这个指针变量后,给它赋值,如:

    int* p;
    int a;
    p = &a;//&为取址符号
    cout << *p << endl;

      则p的值是a的地址,(*p)即为a的值

    关于函数参数:

      C语言中有两种向函数传递参数的方式:

        1)值传递(相当于弄了参数的一个副本)

        2)引用传递(相当于使用的是参数本身)

      例:

    #include <stdlib.h>
    #include <cstdio>
    int *p3,*p4;
    //这个例子比较复杂,但是比较有用,fun函数传递的两个参数,一个是值传递的指针,一个是引用传递的指针
    void fun(int* p1,int* &p2) {
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
        *p1 = 25;
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
        p1 = p3;
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
        *p2 = 100;
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
        p2 = p4;
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
    }    
    
    int main() {
    	p3 = (int*)malloc(sizeof(int));
    	p4 = (int*)malloc(sizeof(int));
    	*p3 = 10;
    	*p4 = 20;
        int *p1,*p2;
        p1 = (int*)malloc(sizeof(int));
        p2 = (int*)malloc(sizeof(int));
        *p1 = 5,*p2 = 15;
        fun(p1,p2);
        printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
    }
    

      结果:

    5 15 10 20
    25 15 10 20
    10 15 10 20
    10 100 10 20
    10 20 10 20
    25 20 10 20
    

      

    typedef的几种基础用法:

      1. 为现有类型起个别名

        typedef int dataType;

      2. 给复合类型起个别名

        1) 给数组起别名

          typedef int intList[100];

          那么

            intList a,b;

          相当于

            int a[100],b[100];

        2) 给指针起别名

          typedef int* intPointer;

          那么

            intPointer pa;

          相当于

            int* pa;

      3. 有关结构体的typedef

        typedef struct Node {

          int a,b;

        }strNode,*ptrNode;

        相当于给Node起了个别名,叫strNode,并且给指向Node的指针类型起了名叫ptrNode

        这样写之后,以下两句话就分别等价于:

          1)strNode A;//Node A;

          2)prtNode pA,pB;//Node *pA,*pB;

    malloc函数简介:

      malloc的全称是memory allocation,中文叫动态内存分配。

      malloc(unsigned int num_bytes)

      以上的malloc函数向系统申请分配num_bytes个字节的空间,如果分配成功,则返回一个指向被分配内存地址的第一个位置的指针,否则返回NULL。

      由于malloc返回的指针类型为void*,所以在使用这个函数时,我们时常要对分配好的空间进行类型强制转换,转成我们需要的类型。

      例:

    int* p;//创建一个指向int类型的指针
    p = (int*)malloc(sizeof(int) * 100);//给p分配连续 100*4 byte的内存空间
  • 相关阅读:
    下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
    c语言二级指针简单练习
    C++ Dlib库介绍和编译使用
    Win10怎么设置开机自动启动程序?
    C 可变参数
    Qt 进程守护程序(windows、linux)
    Leetcode 面试题 17.04. 消失的数字
    TCP的三次握手与四次挥手理解及面试题(很全面)
    studio visual 插件下载太慢 visual studio 下载慢的解决办法
    人脸检测(Python dlib)
  • 原文地址:https://www.cnblogs.com/obob/p/10261495.html
Copyright © 2020-2023  润新知