2017年計(jì)算機(jī)二級(jí)C語言考點(diǎn)歸納:字符串的指針以及指向字符串的指針變量

字號(hào):


    10.2 字符串的指針以及指向字符串的指針變量
    1.用指針方法實(shí)現(xiàn)一個(gè)字符串的存儲(chǔ)和運(yùn)算
    如:
    char * strp=″china″;
    此處定義了一個(gè)字符指針變量strp,變量中存放的是字符串第一個(gè)字符的地址。
    C語言對(duì)字符串常量是按字符數(shù)組處理的,它實(shí)際上在內(nèi)存開辟了一個(gè)字符數(shù)組用來存放字符串變量,并把字符串首地址賦給字符指針變量strp。
    在輸出時(shí)用
    printf(″%s\n″,strp);
    通過字符數(shù)組名或字符指針變量可以輸出一個(gè)字符串。而對(duì)一個(gè)數(shù)值型數(shù)組,是不能企圖用數(shù)組名輸出它的全部元素的。
    2.字符指針變量與字符數(shù)組
    雖然用字符數(shù)組和字符指針變量都能實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算,但它們二者之間是有區(qū)別的,不應(yīng)混為一談,主要有以下幾點(diǎn):
    (1)字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串的首地址),決不是將字符串放到字符指針變量中。
    (2)對(duì)字符數(shù)組只能對(duì)各個(gè)元素賦值,不能用以下辦法對(duì)字符數(shù)組賦值。
    Char str[14];
    str=″I love China!″;
    而對(duì)字符指針變量,可以采用下面方法賦值:
    char *a;
    a=″I love China!″;
    但注意賦給a的不是字符,而是字符串的首地址。
    (3)賦初值時(shí),對(duì)以下的變量定義和賦初值:
    char *a=″I love China!″;
    等價(jià)于:
    char *a;
    a=″I love China!″;
    而對(duì)數(shù)組初始化時(shí):
    static char str[14]={″I love China!″};
    不能等價(jià)于
    char str[14];
    str[]={″I love China!″};
    即數(shù)組可以在變量定義時(shí)整體賦初值,但不能在賦值語句中整體賦值。
    (4)在定義一個(gè)數(shù)組時(shí),在編譯時(shí)即已分配內(nèi)存單元,有確定的地址。而定義一個(gè)字符指針變量時(shí),給指針變量分配內(nèi)存單元,在其中可以放一個(gè)地址值,就是說,該指針變量可以指向一個(gè)字符型數(shù)據(jù),但如果未對(duì)它賦予一個(gè)地址值,這時(shí)該指針變量并未具體指向哪一個(gè)字符數(shù)據(jù)。
    (5)指針變量的值是可以改變的。
    3.字符串處理函數(shù)
    C語言中沒有對(duì)字符串進(jìn)行合并、比較和賦值的運(yùn)算符,但幾乎所有版本的C語言中都提供了有關(guān)的庫函數(shù)。例如:
    (1)strcat函數(shù):連接兩個(gè)字符數(shù)組中的字符串
    (2)strcpy函數(shù):字符拷貝函數(shù)
    (3)strcmp函數(shù):字符比較函數(shù)
    (4)strlen函數(shù):測(cè)試字符串長度的函數(shù)
    (5)strlwr函數(shù):將字符串中大寫字母轉(zhuǎn)換成小寫字母
    (6)strupr函數(shù):將字符中小寫字母轉(zhuǎn)換成大寫字母