資料結構實用C語言基礎
阿新 • • 發佈:2019-01-13
關於函式引數:
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的記憶體空間