補充:指針、結(jié)構(gòu)體和字符串中的注意點-創(chuàng)新互聯(lián)

1、 fgets函數(shù) 1.1 函數(shù)原型:
char * fgets ( char * str, int num, FILE * stream );

其中num表示其能讀入的字符串的大長度,F(xiàn)ILE *為文件指針。
fgets函數(shù)較gets函數(shù)而言更為安全,更推薦使用。
具體示例:

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都做網(wǎng)站、介休網(wǎng)絡(luò)推廣、成都小程序開發(fā)、介休網(wǎng)絡(luò)營銷、介休企業(yè)策劃、介休品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供介休建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn
char food[5];
fgets(food, sizeof(food), stdin);

首先,它接收指向緩沖區(qū)的指針;
其次,它接收字符串(包括’\0’)的大長度。
stdin為標(biāo)準(zhǔn)輸入,表示數(shù)據(jù)來自鍵盤
在上面這段代碼中,food是數(shù)組變量,所以sizeof返回了數(shù)組的大??;如果food是指針變量,sizeof僅僅會返回指針的大小。
因此,如果要向fgets()函數(shù)中傳遞數(shù)組變量,就用sizeof;如果只是傳指針,就應(yīng)該輸入你想要的長度。
如:

fgets(food, 5, stdin);

如果food是一個指針,就不能用sizeof,而應(yīng)該顯式給出長度。
2、字符串常量(字符串字面值)

通常儲存在只讀存儲器中
eg.char *str = "hello"; char str[] = "hello";
前者不能修改,只讀;后者可讀可寫。
注意:str[] 和 *str當(dāng)且僅當(dāng)作函數(shù)形參的時候地位完全相等。

3、結(jié)構(gòu)名和別名

對于結(jié)構(gòu)體而言,結(jié)構(gòu)名是struct關(guān)鍵字后面的那個單詞。類型名是指typedef后結(jié)構(gòu)體的名稱。
eg.

typedef struct M_book{int a;
	int b;
}Book;

其中的M_book就是結(jié)構(gòu)名,Book就是類型名。如果只寫類型名而不寫結(jié)構(gòu)名,一般也沒問題。(個人更推薦不加結(jié)構(gòu)名的寫法)

也可以寫成下面這種格式:

typedef struct Hoge{int a;
	int b;
}Hoge;
4、strcmp函數(shù) 4.1 函數(shù)原型:

int strcmp ( const char * str1, const char * str2 );
即傳入的參數(shù)必須為char * 類型的,如果a, b的類型為char **,則代碼應(yīng)寫成strcmp(*a, *b);

5、不要返回函數(shù)中局部變量的地址。

(因為函數(shù)中局部變量的地址在函數(shù)結(jié)束后無效)

6.其他: 6.1 多維數(shù)組問題

c語言中準(zhǔn)確的說不存在多維數(shù)組,而應(yīng)該稱為“數(shù)組的數(shù)組”。
實例:(非常重要!
對于以下聲明,int hoge[3][5];

①hoge的類型為“int 的數(shù)組(元素個數(shù)5)的數(shù)組(元素個數(shù)3)”
②盡管如此,在表達式中數(shù)組可以被解讀成指針。因此,hoge 的類型為“指向int 的數(shù)組(元素個數(shù)5)的指針

③hoge[i]是*(hoge + i)的語法糖。
1)給指針加上i,就意味著指針前移它指向的類型 * i的距離。
hoge 指向的類型為“int的數(shù)組(元素個數(shù)5)”,因此,hoge + i讓指針前移了 sizeof (int [5]) * i 的距離。

2)通過*(hoge + i)中的* ,去掉一個指針,(hoge + i)的類型就是“指向int 的數(shù)組(元素個數(shù)5)

3)盡管如此,由于在表達式中,數(shù)組可以解讀為指針,所以*(hoge + i)的最終類型為“指向int 的指針”。

6.2 突然使用沒有指向內(nèi)存區(qū)域的指針(野指針)
int *p;
p[3] = ....
6.3 函數(shù)傳參

1)返回值類型的指針類型為傳入形參的類型。
eg.返回int 型,傳入為int *型。

2)將類型T 的數(shù)組作為參數(shù)進行傳遞時可以傳遞“指向T的指針”。
因此,如果想要將“數(shù)組a的數(shù)組b”作為參數(shù)傳遞,可以考慮傳遞“指向數(shù)組a的指針”。

此外,c標(biāo)準(zhǔn)只承認(rèn)“指向數(shù)組最后元素的下一個元素”是合法的,如果指針指向“最后元素的下下個元素”,即為非法。

7.行指針

具體可參考:
關(guān)于C語言行指針的詳細(xì)解析

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:補充:指針、結(jié)構(gòu)體和字符串中的注意點-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article12/dejedc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站靜態(tài)網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作