說明:堆分配儲存實現串時,串並不是以』\0『, 而是用資料項int length來表示的,所以和傳統的c語言操作字串有所不同。
標頭檔案#ifndef pilehead_h_included
#define pilehead_h_included
#include
#include
typedef struct
hstring ;
int strassign( hstring* pstr , char* pch ) ;
int strlength( hstring* pstr ) ;
int strcompaer( hstring* pstr1 , hstring* pstr2 ) ;
int strclear( hstring* pstr ) ;
int strconcat( hstring* pstr , hstring str1 , hstring str2 ) ;
int strsub( hstring* sub , hstring pstr , int pos , int length ) ;
int strprint( hstring* pstr ) ;
#endif // pilehead_h_included
函式實現
#include "pilehead.h"
int strassign( hstring* pstr , char* pch )
int i ;
for( i = 0 ; pch[i] != '\0' ; i++ )
if( i == 0 )
else
i = 0 ;
while( i < pstr->len )
return 0 ;
}int strprint( hstring* pstr )
printf( "\n" ) ;
return 0 ;
}int strlength( hstring* pstr )
int strcompaer( hstring* pstr1 , hstring* pstr2 )
else if( ret > 0 )
else
}int diff = pstr1->len - pstr2->len ;
if( diff < 0 )
else if( diff == 0 )
return 1 ;
}int strclear( hstring* pstr )
pstr->len = 0 ;
return 0 ;
}int strconcat( hstring* pstr , hstring str1 , hstring str2 )
pstr->len = str1.len + str2.len ;
return 0 ;
}int strsub( hstring* sub , hstring pstr , int pos , int length )
strclear( sub ) ;
sub->ch = ( char* )malloc( length * sizeof( char ) ) ;
sub->len = length ;
int i = 0 ;
while( i < length )
return 0 ;
}測試函式
#include "pilehead.h"
int main()
資料結構 串的順序儲存 動態分配)
5.小結 include include define maxlen 255 預定義最大串長為255typedef struct hstring 函式宣告 void initstring hstring s 1.初始化 void increasesize hstring s,int len 2.擴容...
C語言動態分配記憶體
動態開闢記憶體的函式 void malloc size t size 這個函式向記憶體申請 塊連續可 的空間,並返回指向這塊空間的指標 如果開闢成功,則返回 個指向開闢好空間的指標 如果開闢失敗,則返回 個null指標,因此malloc的返回值 定要做檢查 返回值的型別是 void 所以malloc...
C語言動態分配記憶體知識
陣列的長度必須事先指定,只能是常整數,不能是變數 傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放,只能在定義 該陣列的函式使用完畢後,釋放陣列占用的記憶體。陣列的長度一旦定義,其長度就不能更改。傳統形式定義的陣列不能跨函式使用。動態記憶體分配可以很好的解決傳統陣列的缺點。傳統陣列也被稱之為...