C語言學習 不使用庫函式,實現字串拷貝功能

2021-09-17 18:29:01 字數 1459 閱讀 5709

1,指標的使用

定義無有參無返回值函式,

※ 利用陣列作為函式引數

陣列元素可以作為實參,但不可以作為形參(傳遞方向:從實參傳到形參,單向傳遞)

用 數值元素 作為函式 實參 時,向形參變數傳遞的是陣列元素的值,

而用 陣列名 作為函式 實參 時,向形參(陣列名或指標變數)傳遞的是陣列首元素的位址。

int ar 等價於 int *ar 前提是在只有函式原型或函式定義的時候才可以。

2,利用malloc為數值分配空間

分配記憶體

malloc():

使用:int *p;

p = (int *)malloc(size); //size=400

calloc():

使用:int *p;

p = (int *)calloc( n, size ); //n:分配n個長度為size的記憶體塊,size=400

realloc():

使用:int *p;

p = (int *)realloc( p, newsize); //p: 調整p所指記憶體區域的大小為newsize=400

3,free()的運用,以及使用free遇到的問題

使用vc++2010 編譯器時,執行閃退(奔潰)的解決方法

1.越界

例如: 

int *p = (int *)mallco(10*sizeof(int));

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

free(p);

2. 修改了指標的指向

int *p = (int *)mallco(10*sizeof(int));               

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

free(0);

3.重複釋放同一段記憶體

4.釋放非動態記憶體(自己在此處磕碰!!!)

程式如下:(不是最優的方法) 

#include#includevoid cap(char *a,int n)  //形參

printf("b = %s",b);

printf("\n");

//free(b); //不可以釋放非動態記憶體

}int main()

#include int main()

; int i = 0;

for (i = 0; src[i] != '\0'; i++)

//補結束符

dst[i] = 0;

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

return 0;

}

字串 不使用庫函式,編寫函式strcpy

一 問題描述 已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 其中strdest是目的字串,strsrc是源字串。1 不呼叫c c的字串庫函式,請編寫函式 strcpy 2 strcpy能把strsrc的內容複製到strdest,為...

C語言 字串庫函式實現

對於字串,編譯器為我們提供了一些庫函式以方便我們對其的操作,下面我們將對一些常用的字串庫函式進行簡單介紹,並自我實現這些方法。1 strcopy 函式原型 char strcpy char dest,const char src 說明 src和dest所指記憶體區域不可以重疊且dest必須有足夠的空...

C語言 不使用strcpy 函式實現字串複製功能

字串複製函式 字串複製是字串操作中比較常用的操作之一。c語言庫函式中提供的字串複製函式是 strcpy函式。該函式的功能為 把源字元陣列中的字串複製到目的字元陣列 中,字串結束標誌 0 也一同複製。下面例項為通過自定義函式完成字串複製功能。源 include void copy string cha...