真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

梓益C語言學(xué)習(xí)筆記之鏈表&動態(tài)內(nèi)存&文件-創(chuàng)新互聯(lián)

梓益C語言學(xué)習(xí)筆記之鏈表&動態(tài)內(nèi)存&文件

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計團隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都10余年的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都成百上千家中小型企業(yè)策劃設(shè)計了網(wǎng)站。

一、定義:

鏈表是一種物理存儲上非連續(xù),通過指針鏈接次序,實現(xiàn)的一種線性存儲結(jié)構(gòu)。

二、特點:

鏈表由一系列節(jié)點(鏈表中每一個元素稱為節(jié)點)組成,節(jié)點在運行時動態(tài)生成(malloc),每個節(jié)點包括兩個部分:

存儲數(shù)據(jù)元素的數(shù)據(jù)域

存儲下一個節(jié)點地址的指針域

如:

typedef struct student

int num;

char name[20];

struct student *next;

   }STU;

三、動態(tài)內(nèi)存申請

在實際的編程中,有時所需的內(nèi)存空間取決于實際輸入的數(shù)據(jù),無法預(yù)先確定 ,所以需要動態(tài)的分配內(nèi)存空間,同時把不再使用的空間回收再次利用。

如鏈表的內(nèi)存就需要動態(tài)申請

1. 靜態(tài)分配&動態(tài)分配

靜態(tài)分配

在程序編譯或運行過程中,按事先規(guī)定大小分配內(nèi)存空間的分配方式。如:int a [10]

必須事先知道所需空間的大小。

分配在棧區(qū)或全局變量區(qū),一般以數(shù)組的形式。

按計劃分配。

動態(tài)分配

在程序運行過程中,根據(jù)需要大小自由分配所需空間。

按需分配。

分配在堆區(qū),一般使用特定的函數(shù)進行分配。

通常使用malloc函數(shù)   void *malloc(unsigned int size);  在堆區(qū)分配一塊長度為size字節(jié)的連續(xù)區(qū)域,用來存放類型說明符指定的類型。

函數(shù)返回void*指針,使用時必須做相應(yīng)的強制類型轉(zhuǎn)換

分配的內(nèi)存空間內(nèi)容不確定,一般使用memset初始化。

使用完以后,要記得用  free()函數(shù)  釋放內(nèi)存

返回值:分配空間的起始地址 ( 分配成功 )

 NULL              ( 分配失敗 )

注意

1、在調(diào)用malloc之后,一定要判斷一下,是否申請內(nèi)存成功。

2、如果多次malloc申請的內(nèi)存,第1次和第2次申請的內(nèi)存不一定是連續(xù)的

例:

#include

#include

#include

int main()

{

int count,*array,n;

printf("請輸入您要申請的數(shù)組元素個數(shù)\n");

scanf("%d",&n);

array=(int *)malloc(n*sizeof(int));

if(array==NULL)

{

printf("申請內(nèi)存失敗\n");

return 0;

}

memset(array,0,n*sizeof(int));

for(count=0;count

{

array[count]=count;

}

for(count=0;count

{

printf("%d\n",array[count]);

}

free(array);//釋放array指向的內(nèi)存

return0

}

free 函數(shù)(釋放內(nèi)存函數(shù))

頭文件:#include

函數(shù)定義:void free(void *ptr)

函數(shù)說明:free函數(shù)釋放ptr指向的內(nèi)存。

例:

char *p=(char *)malloc(100);

free(p);//

注意

1、free后,因為沒有給p賦值,所以p還是指向原先動態(tài)申請的內(nèi)存。但是內(nèi)存已經(jīng)不能再用了,p變成野指針了。

2、一塊動態(tài)申請的內(nèi)存只能free一次,不能多次free

四、文件

文件就是存放在磁盤上的,一些數(shù)據(jù)的集合。

1.行緩沖:

標準io庫函數(shù),往標準輸出(屏幕)輸出東西的時候是行緩沖的

  行緩沖只有下面幾種情況才刷新緩沖區(qū)

  1-緩沖區(qū)里有換行符  "\n"

2-緩沖區(qū)滿了,自動刷新緩沖區(qū)

如: while(1)

{

printf("hello world ");

}

3-人為刷新緩沖區(qū) fflush(stdout)

4-程序正常結(jié)束,刷新緩沖區(qū) return 0;

2.全緩沖:

標準io庫函數(shù) 往普通文件讀寫數(shù)據(jù)是全緩沖的,

碰到換行符也不刷新緩沖區(qū)

1.緩沖區(qū)滿了,刷新緩沖區(qū)

2.人為刷新緩沖區(qū) fflush(文件指針)

3.程序正常結(jié)束刷新緩沖區(qū)

3.無緩沖:

在讀寫文件的時候通過系統(tǒng)調(diào)用io (read write),對文件進行讀寫數(shù)據(jù)是無緩沖的,即寫數(shù)據(jù)會立馬進入文件,讀數(shù)據(jù)會立馬進入內(nèi)存

4.寫文件的流程:

應(yīng)用程序空間-(內(nèi)核空間 -(驅(qū)動程序--(硬盤

應(yīng)用程序和內(nèi)核程序運行在不同的空間里,目的是為了保護內(nèi)核。

通過緩沖可以減少進出內(nèi)核的次數(shù),以提高效率。

5.常用文件操作:

5.1 打開文件:FILE *fopen(const char *path, const char *mode);

FILE *fp;

fp=fopen(“./test.txt”,”r”);

5.2 關(guān)閉文件:int fclose(FILE *fp);

例:

#include

int main()

{

FILE *fp;

int ret;

fp=fopen("./test.txt","r+");

if(fp==NULL)

{

perror(“fopen”);

return 0;

}

fclose(fp);

return 0;

}

5.3 文件定位:

rewind 復(fù)位讀寫位置

把文件內(nèi)部的位置指針移到文件首

rewind(fp);

ftell 測文件讀寫位置距文件開始有多少個字節(jié)

  int length;  length = ftell(fp);

fseek 定位位置指針(讀寫位置)

fseek函數(shù)(一般用于二進制文件即打開文件的方式需要帶b)

int fseek(FILE *stream, long offset, int whence);  //int fseek(文件類型指針,位移量,起始點);

參數(shù):

whence起始位置

文件開頭     SEEK_SET   0

文件當(dāng)前位置   SEEK_CUR   1

文件末尾     SEEK_END   2

offset位移量:

以起始點為基點,向前、后移動的字節(jié)數(shù),正數(shù)往文件末尾方向偏移,負數(shù)往文件開頭方向偏移。

例:

fseek(fp,50,SEEK_SET)

fseek(fp,-50,SEEK_END);

fseek(fp,0,SEEK_END);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁名稱:梓益C語言學(xué)習(xí)筆記之鏈表&動態(tài)內(nèi)存&文件-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/dpcgjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部