数据结构实用C语言基础

关于函数参数:

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

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

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

  例:

#include <stdlib.h>
#include <cstdio>
int *p3,*p4;

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的内存空间

猜你喜欢

转载自www.cnblogs.com/obob/p/10261495.html