国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

詳解const、static關鍵字

這篇具有很好參考價值的文章主要介紹了詳解const、static關鍵字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄?

一、static關鍵字

二、const關鍵字

一、static關鍵字

在c語言中:

static是用來修飾變量和函數(shù)的

? ? ? ? 1.修飾局部變量——稱為靜態(tài)局部變量

? ? ? ? 2.修飾全局變量——稱為靜態(tài)全局變量

? ? ? ? 3.修飾函數(shù)——稱為靜態(tài)函數(shù)

有關內(nèi)存相關知識補充:程序的所有數(shù)據(jù),也就是所有的變量,都是存儲在內(nèi)存中的,而內(nèi)存中又可以分為棧區(qū)、堆區(qū)、靜態(tài)區(qū)。

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?1.1 static修飾局部變量

作用:1.static修飾的局部變量改變了變量的生命周期

? ? ? ? ? ?2.讓靜態(tài)局部變量出了作用域依然存在,到程序結(jié)束,生命周期才結(jié)束

? ? ? ? ? ?3.改變變量的存儲類型(位置):棧區(qū)/堆區(qū)---->靜態(tài)區(qū)

代碼演示:

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?由以上代碼可以看出,在沒有static修飾的時候每一次調(diào)用test函數(shù),函數(shù)中i的值都會重新賦值,而當i變量由static修飾的時候,在test結(jié)束之后并沒有被銷毀,下次調(diào)用test函數(shù)時i的值仍然是上次調(diào)用時i++的值。

可以看出,由static修飾的局部變量生命周期變長了。

1.2 static修飾的全局變量

作用:如果一個全局變量被static修飾,那這個全局變量就只能在本源文件中使用,不能在其他源文件內(nèi)使用。

代碼演示:

//代碼1
//lin.c
int bite_lin=20;

//test.c
extern bite_lin;//外部符號聲明
int main()
{
    printf("%d\n",bite_lin);
    return 0;
}


//代碼2
//lin.c
static int bite_lin=20;

//test.c
extern bite_lin;
int main()
{
	printf("%d", bite_lin);
	return 0;
}

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

可以看出:static修飾的全局變量改變了這個全局變量的鏈接屬性,使得這個全局變量由外部變量轉(zhuǎn)變成內(nèi)部變量,這個靜態(tài)變量只能在自己的源文件內(nèi)部使用,而不能在其他源文件內(nèi)部使用。(簡要的說:限制了使用范圍,讓人感覺作用域變小了)?

1.3 static修飾的函數(shù)

作用:static修飾的函數(shù)和修飾的全局變量類似,限制了函數(shù)的使用范圍,使得該函數(shù)只能在本源文件中使用,而不能在其他源文件中使用。

代碼演示:

//代碼1
//add.c
Add(int x, int y)
{
	return x + y;
}
//test.c
extern Add(int x,int y);//外部函數(shù)聲明
int main()
{
	printf("%d", Add(2, 3));
	return 0;
}


//代碼2
//add.c
static Add(int x, int y)
{
	return x + y;
}

test.c
extern Add(int x,int y);//外部函數(shù)聲明
int main()
{
	printf("%d", Add(2, 3));
	return 0;
}

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)?可以看出,跟static修飾的全局變量一樣,static修飾的函數(shù)使用范圍被限制了。

二、const關鍵字

2.1 const修飾常變量

const修飾的常變量具有常量的特性,不能被修改,但本身還是個變量。

例:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?這樣子直接修改編譯器會報錯,是因為const修飾的常量是不能被直接修改的。

例:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

這里報錯是因為表示數(shù)組的元素個數(shù)必須是常量而不能是變量,這也作證了const修飾的變量本質(zhì)上還是個變量。(注:在C++或者在其他比較新的C語言的標志中,const修飾的變量也可以用于表示數(shù)組的元素個數(shù))?

2.2 const修飾指針

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

可以看出,當遇到變量被const修飾時候,還可以通過指針的方式修改num的值,那么如果指針加上const會變得怎么樣呢?

例:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

1.當const放在*的左邊的時候,修飾的是指針指向的內(nèi)容,保證指針指向的內(nèi)容不能通過指針來改變。(這里的左邊,也可以是這樣子放:int const* p,只要保證是*左邊就可以)

但是指針變量本身的內(nèi)容是可以改變的,例如:

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)?

2.const如果放在*的右邊的時候,修飾的是指針變量的本身,也就是所指向內(nèi)容的地址。

保證了指針變量的內(nèi)容不能修改,但是指針指向的內(nèi)容可以通過指針改變。

例如:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?2.3 const修飾函數(shù)

用const修飾函數(shù),主要是防止在傳參的時候,在被傳入的函數(shù)中傳入的參數(shù)被修改。

1.“值傳遞”

代碼演示:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

形參被const修飾,那在此函數(shù)中的n就不能再被修改,如果修改將會報錯。?

2.“指針傳遞”

代碼演示:const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?指針傳遞也是如此,當形參被const修飾的時候,在該函數(shù)中這給指針就不能被修改。

2.4 const修飾指針以及函數(shù)中的具體運用

我們在編寫函數(shù)的過程中,如果要寫出優(yōu)秀的代碼,那么在編寫函數(shù)的過程中就要盡量的使用const修飾,這樣可以避免當我們想要傳入的參數(shù)不被修改時而不小心被修改導致bug的出現(xiàn),增加了代碼的可用性以及目的性。

以庫函數(shù)中strcpy為例子,模擬此函數(shù):

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

void my_strcpy(char* dest,const char* src)
{
?? ?while (*dest++=*src++)
?? ?{
?? ??? ?;
?? ?}
}
int main()
{
?? ?char arr1[20] = "xxxxxxxxxxxxxxx";
?? ?char arr2[] = "hello lin";

?? ?my_strcpy(arr1, arr2);

?? ?printf("%s\n", arr1);
?? ?return 0;
}

const static,c++,c語言,數(shù)據(jù)結(jié)構(gòu)

?因為我們這里的src是不想要被改變的,調(diào)用該函數(shù)的時候我們只是需要讓該函數(shù)把scr的字符串拷貝到dest的字符串,為了防止在該函數(shù)中該字符串內(nèi)容被改變導致出現(xiàn)bug,我們就可以用const去修飾該形參。文章來源地址http://www.zghlxwxcb.cn/news/detail-734621.html

到了這里,關于詳解const、static關鍵字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包