在結構中使用字元陣列還是字元指標

2021-07-15 06:21:52 字數 1226 閱讀 5069

宣告乙個陣列有三種方法:

使用第二種和第三中方法可以建立乙個動態陣列,即乙個程式在執行時才分配記憶體並可選擇陣列的大小。

在結構中使用字元陣列和字元指標儲存字串都是可行的,如下面的宣告:

#define len 20

struct stu

struct teac

但是在宣告結構變數和結構初始化時,可能會出現一些問題

sruct stu dent = ;

struct teac her = ;

這段**可以正常執行,但是我們卻不知道字串儲存在哪。對於struct stu 變數 dent 來說,字串儲存在結構內部,這個結構總共

分配了 40 個位元組

來存放兩個字串。

然而對於struct teac 變數 her來說,字串儲存在編譯器儲存字串常量的任何地方。這個結構中存放的只是兩個位址而已,它不

為字串分配任何儲存空間,它只適用於

管理那些已經建立的而且在程式中已經分配過空間的字串。

struct stu dent; 

struct teac her;

gets(dent.name);

gets(her.name);

對於dent ,名字 name有乙個用來存放字串的陣列;對於teac ,gets( )把字串放到由 her.name 給出的位址中。但是這是乙個未

經初始化的變數,

該位址可能是任何值,程式就可以把名字放到任何地方。因此,如果需要乙個結構來儲存字串,請盡量使用字元陣列

在結構中使用指標處理字串的

乙個用意義的方法是使用 malloc ()分配記憶體,並用指標來存放位址。這個方法的優點是可以申請合適

的空間,不至於浪費記憶體空間。

char temp[20];

struct teac * her;

puts("input name of teacher:");

gets(temp);

her->name = (char *)malloc(strlen(temp) + 1);//分配儲存name的記憶體

strcpy(her->name, temp);//把name複製到分配的記憶體中

free(her->name);//釋放記憶體

在JSTL中使用字串處理函式

下面是jstl中自帶的方法列表以及其描述 函式名 函式說明 使用舉例 contains 判斷字串是否包含另外乙個字串 containsignorecase 判斷字串是否包含另外乙個字串 大小寫無關 endswith 判斷字串是否以另外字串結束 escapexml 把一些字元轉成xml表示,例如 字元...

用列舉方法 在case 語句中使用字元

首先引用typinfo單元 type tcommandenum aa,bb,cc,dd,ee,ff,gg,hh procedure tcommandprocess.processcmd chn byte cmd,s string var cmdenum tcommandenum begin cmde...

Delphi在case語句中使用字串

在 case 語句中使用字串 by 熊恆 beta 我今天要介紹的是乙個比較另類的方法。大家都知道,case 語句只能對順序型別 ordinal type 管用,那麼我們先看一下順序型別到底有那些呢 1 整型 2 字 符型 3 列舉型。於是也就演化出三種在 case 語句裡面使用字串的方法 耐心看下...