国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】

這篇具有很好參考價(jià)值的文章主要介紹了動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者簡(jiǎn)介: 辭七七,目前大一,正在學(xué)習(xí)C/C++,Java,Python等
作者主頁(yè): 七七的個(gè)人主頁(yè)
文章收錄專欄:進(jìn)階C語(yǔ)言,本專欄主要講解數(shù)據(jù)存儲(chǔ),進(jìn)階指針,動(dòng)態(tài)內(nèi)存管理,文件操作,程序環(huán)境和預(yù)處理等
歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!????

動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】


我們之前以及寫過靜態(tài)版本的通訊錄了靜態(tài)版通訊錄——C語(yǔ)言【詳解+全部碼源】,但是這個(gè)通訊錄大小是固定大?。ㄖ荒苁?00個(gè)元素),所以今天讓我們學(xué)習(xí)一下動(dòng)態(tài)通訊錄解決一下這個(gè)問題吧!

1. 框架設(shè)計(jì)

我們要在靜態(tài)版本的通訊錄是進(jìn)行功能的改造和升級(jí)
所用框架靜態(tài)版通訊錄一樣

test.c:通訊錄的總體邏輯,測(cè)試通訊錄的相關(guān)功能
contact.c:通訊錄的實(shí)現(xiàn)模塊
contact.h:通訊錄的各種聲明,包括庫(kù)函數(shù)、自定義函數(shù)以及自定義結(jié)構(gòu)體的聲明

動(dòng)態(tài)的版本的要求

  1. 默認(rèn)能夠存放3個(gè)人的信息
  2. 不夠的話,每次增加2個(gè)人信息

2. 對(duì)存放數(shù)據(jù)信息的修改

typedef struct Contact
{
	PeoInfo data[MAX];//存放數(shù)據(jù)
	int sz;//記錄通訊錄中的有效信息個(gè)數(shù)
}Contact;

我們之前的通訊錄在存放數(shù)據(jù)信息時(shí)以及把這個(gè)地方寫死了,只能MAX等于幾存放多少信息,我們?nèi)绻胍屗兂煽尚薷牡模筒荒苡脭?shù)組來存放數(shù)據(jù)了,所以我們可以定義一塊指針來存放數(shù)據(jù)
動(dòng)態(tài)通訊錄存放信息的代碼表示;

typedef struct Contact
{
	PeoInfo* data;//data指向了存放數(shù)據(jù)的空間
	int sz;//記錄通訊錄中的有效信息個(gè)數(shù)
	int capacity;//通訊錄當(dāng)前的容量
}Contact, * pContact;

畫圖演示:
動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】

3. 對(duì)初始化通訊錄的動(dòng)態(tài)修改

初始化通訊錄的動(dòng)態(tài)表示:

void InitContact(Contact* pc)
{
	pc->data = (PeoInfo*)malloc(DEFAULT_SZ * sizeof(PeoInfo));
	if (pc->data == NULL)
	{
		printf("通訊錄初始化失敗:%s\n", strerror(errno));
		return;
	}
	pc->sz = 0;
	pc->capacity = DEFAULT_SZ;

}

注:
malloc函數(shù)在這里并沒有把其初始化成0

4. 對(duì)通訊錄的擴(kuò)容

因?yàn)槲覀円屚ㄓ嶄洸粔虻脑?,每次增?個(gè)人信息
這就需要我們對(duì)通訊錄進(jìn)行擴(kuò)容處理
要求擴(kuò)容失敗,返回0,擴(kuò)容成功,不需要擴(kuò)容,返回1

int CheckCapacity(Contact* pc)
{
	if (pc->sz == pc->capacity)//一樣大時(shí)我們要增容
	{
		PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + INC_SZ) * sizeof(PeoInfo));
		if (ptr == NULL)
		{
			printf("CheckCapacity:%s\n", strerror(errno));
			return 0;
		}
		else
		{
			pc->data = ptr;
			pc->capacity += INC_SZ;
			printf("增容成功,當(dāng)前容量:%d\n", pc->capacity);
			return 1;
		}
	}
	return 1;
}

擴(kuò)容要對(duì)增加聯(lián)系人函數(shù)進(jìn)行一個(gè)if的判斷
代碼如圖所示:

void AddContact(Contact* pc)
{
	if (0 == CheckCapacity(pc))
	{
		printf("空間不夠,擴(kuò)容失敗\n");
		return;
	}
	else
	{
		printf("請(qǐng)輸入名字:>");
		scanf("%s", pc->data[pc->sz].name);
		printf("請(qǐng)輸入年齡:>");
		scanf("%d", &(pc->data[pc->sz].age));
		printf("請(qǐng)輸入性別:>");
		scanf("%s", pc->data[pc->sz].sex);
		printf("請(qǐng)輸入電話:>");
		scanf("%s", pc->data[pc->sz].tele);
		printf("請(qǐng)輸入地址:>");
		scanf("%s", pc->data[pc->sz].addr);

		pc->sz++;
		printf("添加成功\n");
	}
}

5. 銷毀通訊錄

在退出通訊錄時(shí)在增加一個(gè)銷毀通訊錄用DestroyConact()來銷毀通訊錄
銷毀就是把pc所指向的空間釋放就好了,用我們前面學(xué)到的free函數(shù)來進(jìn)行釋放

void DestroyConact(Contact* pc)
{
	free(pc->data);
	pc->data = NULL;
	pc->capacity = 0;
	pc->sz = 0;
	printf("釋放內(nèi)存.....\n");
}

6. 整體代碼的實(shí)現(xiàn)

contact.h

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>


#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30

#define DEFAULT_SZ 3
#define INC_SZ 2
//表示一個(gè)人的信息
typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}PeoInfo;

typedef struct Contact
{
	PeoInfo* data;//data指向了存放數(shù)據(jù)的空間
	int sz;//記錄通訊錄中的有效信息個(gè)數(shù)
	int capacity;//通訊錄當(dāng)前的容量
}Contact;


//初始化通訊錄
void InitContact(Contact* pc);

//銷毀通訊
void DestroyConact(Contact* pc);

//增加指定聯(lián)系人
void AddContact(Contact* pc);

//顯示聯(lián)系人信息
void ShowContact(const Contact* pc);

//刪除指定聯(lián)系人
void DelContact(Contact* pc);
//查找指定聯(lián)系人
void SearchContact(const Contact* pc);

//修改通訊錄
void ModifyContact(Contact* pc);

//排序通訊錄元素
void SortContact(Contact* pc);

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact* pc)
{
	pc->sz = 0;
	pc->data = (PeoInfo*)malloc(DEFAULT_SZ * sizeof(PeoInfo));
	if (pc->data == NULL)
	{
		printf("通訊錄初始化失敗:%s\n", strerror(errno));
		return;
	}
	pc->capacity = DEFAULT_SZ;

}


int CheckCapacity(Contact* pc)
{
	if (pc->sz == pc->capacity)//一樣大時(shí)我們要增容
	{
		PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + INC_SZ) * sizeof(PeoInfo));
		if (ptr == NULL)
		{
			printf("CheckCapacity:%s\n", strerror(errno));
			return 0;
		}
		else
		{
			pc->data = ptr;
			pc->capacity += INC_SZ;
			printf("增容成功,當(dāng)前容量:%d\n", pc->capacity);
			return 1;
		}
	}
	return 1;
}

void AddContact(Contact* pc)
{
	if (0 == CheckCapacity(pc))
	{
		printf("空間不夠,擴(kuò)容失敗\n");
		return;
	}
	else
	{
		printf("請(qǐng)輸入名字:>");
		scanf("%s", pc->data[pc->sz].name);
		printf("請(qǐng)輸入年齡:>");
		scanf("%d", &(pc->data[pc->sz].age));
		printf("請(qǐng)輸入性別:>");
		scanf("%s", pc->data[pc->sz].sex);
		printf("請(qǐng)輸入電話:>");
		scanf("%s", pc->data[pc->sz].tele);
		printf("請(qǐng)輸入地址:>");
		scanf("%s", pc->data[pc->sz].addr);

		pc->sz++;
		printf("添加成功\n");
	}
}
//銷毀通訊錄
void DestroyConact(Contact* pc)
{
	free(pc->data);
	pc->data = NULL;
	pc->capacity = 0;
	pc->sz = 0;
	printf("釋放內(nèi)存.....\n");
}

void ShowContact(const Contact* pc)
{
	int i = 0;
	//姓名      年齡      性別     電話      地址
	//zhangsan 20        男      123456    北京
	//
	//打印標(biāo)題
	printf("%-10s %-4s %-5s %-12s %-30s\n", "姓名", "年齡", "性別", "電話", "地址");
	//打印數(shù)據(jù)
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-10s %-4d %-5s %-12s %-30s\n",
			pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);
	}
}

static int FindByName(const Contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (0 == strcmp(pc->data[i].name, name))
		{
			return i;
		}
	}
	return -1;
}

void DelContact(Contact* pc)
{
	char name[MAX_NAME] = { 0 };
	if (pc->sz == 0)
	{
		printf("通訊錄為空,無法刪除\n");
		return;
	}
	//刪除
	//1. 找到要?jiǎng)h除的人 - 位置(下標(biāo))
	printf("輸入要?jiǎng)h除人的名字:>");
	scanf("%s", name);
	int pos = FindByName(pc, name);
	if (pos == -1)
	{
		printf("要?jiǎng)h除的人不存在\n");
		return;
	}
	int i = 0;
	//2. 刪除 - 刪除pos位置上的數(shù)據(jù)
	for (i = pos; i < pc->sz - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("刪除成功\n");
}

void SearchContact(const Contact* pc)
{
	char name[MAX_NAME] = { 0 };
	printf("請(qǐng)輸入要查找人的名字:>");
	scanf("%s", name);
	//查找
	int pos = FindByName(pc, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	//打印
	printf("%-10s %-4s %-5s %-12s %-30s\n", "姓名", "年齡", "性別", "電話", "地址");
	//打印數(shù)據(jù)
	printf("%-10s %-4d %-5s %-12s %-30s\n",
		pc->data[pos].name,
		pc->data[pos].age,
		pc->data[pos].sex,
		pc->data[pos].tele,
		pc->data[pos].addr);
}
void ModifyContact(Contact* pc)
{
	char name[MAX_NAME] = { 0 };
	printf("請(qǐng)輸入要修改人的名字:>");
	scanf("%s", name);
	int pos = FindByName(pc, name);
	if (pos == -1)
	{
		printf("要修改的人不存在\n");
		return;
	}
	//修改
	printf("請(qǐng)輸入名字:>");
	scanf("%s", pc->data[pos].name);
	printf("請(qǐng)輸入年齡:>");
	scanf("%d", &(pc->data[pos].age));
	printf("請(qǐng)輸入性別:>");
	scanf("%s", pc->data[pos].sex);
	printf("請(qǐng)輸入電話:>");
	scanf("%s", pc->data[pos].tele);
	printf("請(qǐng)輸入地址:>");
	scanf("%s", pc->data[pos].addr);

	printf("修改成功\n");
}


//按照名字來排序
int cmp_by_name(const void* e1, const void* e2)
{
	return strcmp(((PeoInfo*)e1)->name, ((PeoInfo*)e2)->name);
}

void SortContact(Contact* pc)
{
	qsort(pc->data, pc->sz, sizeof(PeoInfo), cmp_by_name);
	SortContact(pc);
	printf("排序成功\n");
}

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"


void menu()
{
	printf("********************************\n");
	printf("*****       1. add           ***\n");
	printf("*****       2. del           ***\n");
	printf("*****       3. search        ***\n");
	printf("*****       4. modify        ***\n");
	printf("*****       5. show          ***\n");
	printf("*****       6. sort          ***\n");
	printf("*****       0. exit          ***\n");
	printf("********************************\n");
}

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};

int main()
{
	int input = 0;
	Contact con;//通訊錄
	//初始化通訊錄
	InitContact(&con);

	do
	{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			AddContact(&con);
			break;
		case DEL:
			DelContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModifyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortContact(&con);
			break;
		case EXIT:
			DestroyConact(&con);
			printf("退出通訊錄\n");
			break;
		default:
			printf("選擇錯(cuò)誤\n");
			break;
		}
	} while (input);

	return 0;
}

運(yùn)行結(jié)果如圖所示:
動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】

好了關(guān)于C語(yǔ)言的動(dòng)態(tài)通訊錄,七七今天就分享到這里了,下期為大家?guī)砦募嫱ㄓ嶄?,來解決數(shù)據(jù)能否永久保存的問題。如果這篇文章對(duì)大家有幫助,請(qǐng)佬佬們點(diǎn)個(gè)贊再走吧!如果發(fā)現(xiàn)什么問題,歡迎評(píng)論區(qū)留言!????文章來源地址http://www.zghlxwxcb.cn/news/detail-420613.html

到了這里,關(guān)于動(dòng)態(tài)通訊錄——C語(yǔ)言【詳解+全部碼源】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語(yǔ)言---認(rèn)識(shí)動(dòng)態(tài)內(nèi)存管理并實(shí)現(xiàn)一個(gè)動(dòng)態(tài)通訊錄:靜態(tài)通訊錄別來沾邊

    C語(yǔ)言---認(rèn)識(shí)動(dòng)態(tài)內(nèi)存管理并實(shí)現(xiàn)一個(gè)動(dòng)態(tài)通訊錄:靜態(tài)通訊錄別來沾邊

    ??個(gè)人主頁(yè):@小沈熬夜禿頭中???? ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C語(yǔ)言學(xué)習(xí) ??本章內(nèi)容:動(dòng)態(tài)內(nèi)存管理 送給各位??:當(dāng)你的能力還駕馭不了你的目標(biāo)時(shí)那你就應(yīng)該沉下心來歷練 記得 評(píng)論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇

    2024年02月08日
    瀏覽(171)
  • 【C語(yǔ)言】動(dòng)態(tài)內(nèi)存管理基礎(chǔ)知識(shí)——?jiǎng)討B(tài)通訊錄,如何實(shí)現(xiàn)通訊錄容量的動(dòng)態(tài)化

    【C語(yǔ)言】動(dòng)態(tài)內(nèi)存管理基礎(chǔ)知識(shí)——?jiǎng)討B(tài)通訊錄,如何實(shí)現(xiàn)通訊錄容量的動(dòng)態(tài)化

    動(dòng)態(tài)內(nèi)存管理的函數(shù)有:malloc,calloc,ralloc,free,本文講解動(dòng)態(tài)內(nèi)存函數(shù)和使用,如何進(jìn)行動(dòng)態(tài)內(nèi)存管理,實(shí)現(xiàn)通訊錄聯(lián)系人容量的動(dòng)態(tài)化,對(duì)常見動(dòng)態(tài)內(nèi)存錯(cuò)誤進(jìn)行總結(jié)。 ???????? ? ? ? ? ? ? ? ? ??? 豬巴戒 :個(gè)人主頁(yè)? ??????????????? 所屬專欄 :《C語(yǔ)言進(jìn)階》

    2024年02月04日
    瀏覽(44)
  • 動(dòng)態(tài)通訊錄實(shí)現(xiàn)(C語(yǔ)言)

    動(dòng)態(tài)通訊錄實(shí)現(xiàn)(C語(yǔ)言)

    目錄 前言: 一:?jiǎn)蝹€(gè)節(jié)點(diǎn)的設(shè)計(jì)和主邏輯? 結(jié)點(diǎn)設(shè)計(jì) 主邏輯 二:接口實(shí)現(xiàn) (1)生成一個(gè)新的結(jié)點(diǎn) (2)增加信息 (3)打印信息 (4)查找? (5)刪除信息 (6)修改信息 (7)排序 ?插入排序 快速排序 (8)已有數(shù)據(jù)讀取 (9)更新數(shù)據(jù)錄入 三:全部代碼 contact.h(聲明) contact.c(接口) test.c(主邏輯) 本

    2024年02月05日
    瀏覽(96)
  • 【C語(yǔ)言】實(shí)現(xiàn)動(dòng)態(tài)版通訊錄

    【C語(yǔ)言】實(shí)現(xiàn)動(dòng)態(tài)版通訊錄

    ??內(nèi)容專欄:【C語(yǔ)言】進(jìn)階部分 ??本文概括: 結(jié)合自定義類型、動(dòng)態(tài)內(nèi)存管理知識(shí),對(duì)靜態(tài)版本的通訊錄進(jìn)行優(yōu)化。 ??本文作者:花 碟 ??發(fā)布時(shí)間:2023.4.2 ? 目錄 前言: 一、靜態(tài)版本代碼實(shí)現(xiàn): 二、動(dòng)態(tài)通訊錄? 三、代碼整理? 前面我們學(xué)過了結(jié)構(gòu)體、枚舉等自定義

    2024年02月02日
    瀏覽(96)
  • 【C語(yǔ)言】實(shí)現(xiàn)通訊錄(動(dòng)態(tài)+文件)

    【C語(yǔ)言】實(shí)現(xiàn)通訊錄(動(dòng)態(tài)+文件)

    在之前三子棋和掃雷的基礎(chǔ)上,本篇文章博主將給大家逐步分析實(shí)現(xiàn)通訊錄,介紹通訊錄的每個(gè)功能( 動(dòng)態(tài)增長(zhǎng)和文件保存 )。 —————————————————————— test.c - 測(cè)試通訊錄 Contact.c - 函數(shù)的實(shí)現(xiàn) Contact.h - 函數(shù)和類型的聲明 以多文件的形式分模塊寫的

    2024年02月13日
    瀏覽(78)
  • C語(yǔ)言實(shí)現(xiàn)通訊錄--動(dòng)態(tài)版

    C語(yǔ)言實(shí)現(xiàn)通訊錄--動(dòng)態(tài)版

    實(shí)現(xiàn)一個(gè)通訊錄,聯(lián)系人的數(shù)量可多可少 1.在靜態(tài)版本的基礎(chǔ)上改用動(dòng)態(tài)的方法: (1)默認(rèn)能夠存放三個(gè)人的信息 (2)不夠的話,每次增加兩個(gè)人的信息 2.其他功能不變 建立三個(gè)文件: test.c 用于測(cè)試通訊錄的相關(guān)功能 contsct.c 通訊錄的實(shí)現(xiàn)模塊(用函數(shù)實(shí)現(xiàn)功能) conta

    2024年02月15日
    瀏覽(99)
  • 【C語(yǔ)言】動(dòng)態(tài)通訊錄(超詳細(xì))

    【C語(yǔ)言】動(dòng)態(tài)通訊錄(超詳細(xì))

    通訊錄是一個(gè)可以很好鍛煉我們對(duì)結(jié)構(gòu)體的使用,加深對(duì)結(jié)構(gòu)體的理解,在為以后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)打下結(jié)實(shí)的基礎(chǔ) 這里我們想設(shè)計(jì)一個(gè)有 添加聯(lián)系人,刪除聯(lián)系人,查找聯(lián)系人,修改聯(lián)系人,展示聯(lián)系人,排序 這幾種功能的通訊錄 注意:我們按照三個(gè)區(qū)域劃分 上圖所示進(jìn)行

    2024年02月08日
    瀏覽(23)
  • C語(yǔ)言實(shí)踐——通訊錄(2)(動(dòng)態(tài)版)

    首先感謝上一篇博客的大佬們的點(diǎn)贊,非常感謝?。?! 目錄 前言 ?一、需要添加的功能 1. 初始化——?jiǎng)討B(tài)內(nèi)存開辟 2.添加聯(lián)系人——通訊錄擴(kuò)容 3.退出通訊錄——通訊錄銷毀 二、具體操作 1.鋪墊 2.修改初始化函數(shù) 3.修改添加函數(shù)? 4.退出通訊錄,新增銷毀函數(shù) 上一篇文章我

    2023年04月08日
    瀏覽(33)
  • C語(yǔ)言動(dòng)態(tài)內(nèi)存練習(xí):【通訊錄(動(dòng)態(tài)內(nèi)存版本)實(shí)現(xiàn)】

    前面我們寫了一個(gè)靜態(tài)數(shù)組版本的通訊錄,再結(jié)合剛學(xué)習(xí)的動(dòng)態(tài)內(nèi)存管理的知識(shí),我們現(xiàn)在來實(shí)現(xiàn)一個(gè)動(dòng)態(tài)內(nèi)存版本的通訊錄。 動(dòng)態(tài)內(nèi)存版本的通訊錄,主要還是為了解決靜態(tài)數(shù)組版本的通訊錄空間太大導(dǎo)致的內(nèi)存浪費(fèi)和空間太小不夠存放的問題。 擴(kuò)容策略: 為通訊錄設(shè)置

    2023年04月13日
    瀏覽(35)
  • 【創(chuàng)作贏紅包】循序漸進(jìn)的全版本通訊錄詳解,可保存信息的動(dòng)態(tài)通訊錄

    【創(chuàng)作贏紅包】循序漸進(jìn)的全版本通訊錄詳解,可保存信息的動(dòng)態(tài)通訊錄

    之前的博客里我們實(shí)現(xiàn)了 靜態(tài) 的通訊錄。|??ω?` ) 靜態(tài)通訊錄,適合初學(xué)者的手把手一條龍講解_陳大大陳的博客-CSDN博客 這個(gè)版本的通訊錄 無法實(shí)現(xiàn)容量的動(dòng)態(tài)增加,也無法保存我們輸入的信息。(??へ??╬) 靜態(tài)通訊錄,是直接開辟100塊空間內(nèi)存來供使用,但是這樣

    2023年04月17日
    瀏覽(161)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包