動態記憶體分配

2021-07-08 19:10:50 字數 2748 閱讀 1797

```

//void test()

typedef

struct student student;

void *fun()

char fun1()

int main(int argc, const

char * argv)

從鍵盤輸入字串,將字串中的數字挑出來存到另乙個陣列

char src[20] = ;

char des[20] = ;

int j = 0;

printf("輸入:");

scanf("%s", src);

for (int i = 0; i < strlen(src); i++)

}printf("%s", des);

1.開闢乙個空間,存乙個double型別的值,並列印

double a = 2.432;

printf("%f \n", a);

2.開闢乙個空間,存 8 個double型別的值,並列印每個元素

double *p = malloc(sizeof(double) * 8);

double val[8] = ;

p = val;

for (int i = 0; i < 8; i++)

3.開闢乙個空間,存乙個結構體(student)型別的值(為每個成員賦值),並列印

student stu = ;

printf(" %d %s", stu.num, stu.name);

4.開闢乙個空間,存 3 個結構體(student)型別的值(為每個成員賦值),並列印

student stu[3] = ,,};

for (int i = 0; i < 3; i++)

輸入3個單詞,動態分配記憶體儲存單詞,並在最後輸出

char temp[20] = ;

char *words[3] = ;

for (int i = 0; i < 3; i++)

for (int i = 0; i < 3; i++)

//釋放空間

for (int i = 0;i < 3 ; i++)

int a = 0; int *p = malloc(sizeof(int ));

1.可以通過名字和位址訪問 只能通過位址訪問

2.在編寫**是限定好大小 可以在執行時動態分配大小

3.生存週期結束後系統自動釋放 只能手動釋放

4.兩次連續定義,位址連續 不一定連續

5.棧區 -開闢小空間 堆區- 大空間

int a = 0 ;

printf("棧 區:%p\n",&a);

int *p = malloc(sizeof(int));

printf("堆 區:%p\n",p);

static

int b = 0;

printf("靜態區:%p\n",&b);

char *s = "adads";

printf("常量區:%p\n", s);

printf("**區:%p", fun);

/ 動態記憶體分配方式

// 目的:用乙個正好的陣列去存挑出的數字

char src[100] = ;

int num = 0;

scanf("%s", src);

// 1, 先查出數字個數

for (int i = 0; i < strlen(src); i++)

}// 2, 動態開闢一段空間, 並為\0多預留乙個空間

char *p = malloc(sizeof(char) * (num + 1));

// 儲存空間的首位址

char *head = p;

// 3, 存數字

for (int i = 0; i < strlen(src); i++)

}*p = '\0';

printf("%s\n", head);

周遊老師 16:05:10

1, 開闢乙個空間, 存乙個double型別的值, 並列印

double *p = malloc(sizeof(double));

*p = 5.5;

printf("%.1f\n", *p);

2, 開闢乙個空間, 存8個double型別的值, 並列印每乙個元素

double *p = malloc(sizeof(double) * 8);

for (int i = 0; i < 8; i++)

3, 開闢乙個空間, 存1個結構體(student)型別的值(為每乙個成員賦值), 並列印

student *p = malloc(sizeof(student));

p->num = 1;

p->*** = 'm';

p->score = 99.9;

strcpy(p->name, "superman");

printf("%d %s %c %.1f\n", p->num, p->name, p->***, p->score);

4, 開闢乙個空間, 存3個結構體(student)型別的值(為每乙個成員賦值), 並列印

student *p = malloc(sizeof(student) * 3);

for (int i = 0; i < 3; i++)

動態記憶體分配

在c 中建立乙個物件時,我們必須要為這個物件申請一塊記憶體,而且要用建構函式對這塊記憶體進行初始化。c 中的new和delete相對於c的庫函式malloc和free在這方面有很大的優勢,所以我們主要講的是運算子new和delete。當用new來建立乙個物件時,它會自動在堆裡為物件分配記憶體並且為這...

動態記憶體分配

為什麼使用動態記憶體分配?c語言中的一切操作都是基於記憶體的 變數和陣列都是記憶體的別名,如何分配這些記憶體由編譯器在編譯期間決定 定義陣列的時候必須指定陣列唱的 而陣列長度是在編譯期就必須決定的 需求 程式執行的過程中,可能需要使用一些額外的記憶體空間 malloc和free malloc和fre...

動態記憶體分配

c的儲存類別有4種 自動的 auto 靜態的 statics 暫存器的 register 外部的 extern 全域性變數時分配在記憶體中的靜態儲存區 靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,是在編譯時賦初值的,只賦初值一次,在程式執行時它已有初值,以後每次呼叫函式時不再重新賦初...