剖析C語(yǔ)言關(guān)鍵字之void,const,return
return
首先我們弄清楚c語(yǔ)言內(nèi)存分配的方式

然后我們看一段代碼:
#pragma warning(disable:4996)
#include<stdio.h>
char* string()
{
char arr[] = "hello world";
return arr;
}
int main()
{
char* s = string();
printf("%s", s);
return 0;
}

當(dāng)運(yùn)行到printf函數(shù)的時(shí)候,s指向的內(nèi)容仍是”hello world“,但為什么最后打印出來(lái)就是亂碼了?


我們先看棧區(qū)中內(nèi)存的分配
當(dāng)string函數(shù)執(zhí)行完時(shí),它創(chuàng)造的棧幀就被銷毀了,可這里的銷毀并不是將其的數(shù)據(jù)清零,而是將其設(shè)置為可覆蓋的數(shù)據(jù)
但為什么最后又亂碼了呢?
那是因?yàn)閜rintf也是一個(gè)函數(shù),也要?jiǎng)?chuàng)造空間,所以將string所創(chuàng)造的棧幀給覆蓋了

所以我們就完美地解釋了為什么會(huì)亂碼的原因
void
一.可做為函數(shù)的通用接口
例:

運(yùn)用:char* s = (char*)malloc(sizeof(char));
原因:
void類型的指針可被任意類型的指針接受,也可以接受任意類型的指針
二.void不能修飾變量
原因:編譯器不知道給變量分配多少空間
三.void修飾函數(shù)返回值
占位符,告知用戶不用返回值
假如不加,默認(rèn)是int類型的返回值
const
const修飾的變量不能直接被修改,但能通過(guò)指針

但是const仍有它的意義
1.讓編譯器提前告訴我們不該修改的變量被修改了
2.讓看源碼的童鞋知道這里不能被修改

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++11中移動(dòng)構(gòu)造函數(shù)案例代碼
C++11 標(biāo)準(zhǔn)中為了滿足用戶使用左值初始化同類對(duì)象時(shí)也通過(guò)移動(dòng)構(gòu)造函數(shù)完成的需求,新引入了 std::move() 函數(shù),它可以將左值強(qiáng)制轉(zhuǎn)換成對(duì)應(yīng)的右值,由此便可以使用移動(dòng)構(gòu)造函數(shù),對(duì)C++11移動(dòng)構(gòu)造函數(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2023-01-01
C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法
本篇文章是對(duì)求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++有限狀態(tài)機(jī)實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了C++有限狀態(tài)機(jī)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)開辟存儲(chǔ)楊輝三角
這篇文章主要介紹了如何利用C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)開辟存儲(chǔ)楊輝三角,可以靈活的開辟空間,充分的利用空間。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2022-03-03
C++通過(guò)CryptoPP計(jì)算Hash值的過(guò)程詳解
Crypto++ (CryptoPP) 是一個(gè)用于密碼學(xué)和加密的C++庫(kù),它是一個(gè)開源項(xiàng)目,提供了大量的密碼學(xué)算法和功能,本文小編給大家介紹了C++通過(guò)CryptoPP計(jì)算Hash值的過(guò)程,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11

