欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

剖析C語言關(guān)鍵字之void,const,return

 更新時間:2022年01月07日 15:02:05   作者:我說  
這篇文章主要為大家介紹了C語言關(guān)鍵字之void,const,return,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

return

首先我們弄清楚c語言內(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)運行到printf函數(shù)的時候,s指向的內(nèi)容仍是”hello world“,但為什么最后打印出來就是亂碼了?

在這里插入圖片描述

在這里插入圖片描述

我們先看棧區(qū)中內(nèi)存的分配

當(dāng)string函數(shù)執(zhí)行完時,它創(chuàng)造的棧幀就被銷毀了,可這里的銷毀并不是將其的數(shù)據(jù)清零,而是將其設(shè)置為可覆蓋的數(shù)據(jù)

但為什么最后又亂碼了呢?

那是因為printf也是一個函數(shù),也要創(chuàng)造空間,所以將string所創(chuàng)造的棧幀給覆蓋了

在這里插入圖片描述

所以我們就完美地解釋了為什么會亂碼的原因

void

一.可做為函數(shù)的通用接口

例:

在這里插入圖片描述

運用:char* s = (char*)malloc(sizeof(char));

原因:

void類型的指針可被任意類型的指針接受,也可以接受任意類型的指針

二.void不能修飾變量

原因:編譯器不知道給變量分配多少空間

三.void修飾函數(shù)返回值

占位符,告知用戶不用返回值

假如不加,默認(rèn)是int類型的返回值

const

const修飾的變量不能直接被修改,但能通過指針

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

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++11中移動構(gòu)造函數(shù)案例代碼

    C++11中移動構(gòu)造函數(shù)案例代碼

    C++11 標(biāo)準(zhǔn)中為了滿足用戶使用左值初始化同類對象時也通過移動構(gòu)造函數(shù)完成的需求,新引入了 std::move() 函數(shù),它可以將左值強(qiáng)制轉(zhuǎn)換成對應(yīng)的右值,由此便可以使用移動構(gòu)造函數(shù),對C++11移動構(gòu)造函數(shù)相關(guān)知識感興趣的朋友一起看看吧
    2023-01-01
  • C++中const應(yīng)放在類型前還是后

    C++中const應(yīng)放在類型前還是后

    之前遇到小伙伴問C++中const加在類型名前和變量名前的區(qū)別,今天給大家簡單分析下。
    2016-05-05
  • C語言實現(xiàn)個人通訊錄管理系統(tǒng)

    C語言實現(xiàn)個人通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)個人通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 求斐波那契(Fibonacci)數(shù)列通項的七種實現(xiàn)方法

    求斐波那契(Fibonacci)數(shù)列通項的七種實現(xiàn)方法

    本篇文章是對求斐波那契(Fibonacci)數(shù)列通項的七種實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++有限狀態(tài)機(jī)實現(xiàn)詳解

    C++有限狀態(tài)機(jī)實現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了C++有限狀態(tài)機(jī)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C語言詳解如何實現(xiàn)順序棧

    C語言詳解如何實現(xiàn)順序棧

    順序棧,就是用一組地址連續(xù)的存儲單元來存放棧元素,然后用一個棧結(jié)構(gòu)去維護(hù)一個棧。在C中,可用動態(tài)開辟的數(shù)組去表示,維護(hù)的棧結(jié)構(gòu)需要有一個棧底和一個棧頂指針
    2022-04-04
  • C語言實現(xiàn)動態(tài)開辟存儲楊輝三角

    C語言實現(xiàn)動態(tài)開辟存儲楊輝三角

    這篇文章主要介紹了如何利用C語言實現(xiàn)動態(tài)開辟存儲楊輝三角,可以靈活的開辟空間,充分的利用空間。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2022-03-03
  • 一文詳解Qt中線程的實際應(yīng)用

    一文詳解Qt中線程的實際應(yīng)用

    為了讓程序盡快響應(yīng)用戶操作,在開發(fā)應(yīng)用程序時經(jīng)常會使用到線程。這篇文章就來和大家介紹一下Qt中線程的實際應(yīng)用,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++學(xué)習(xí)筆記之pimpl用法詳解

    C++學(xué)習(xí)筆記之pimpl用法詳解

    在編寫穩(wěn)定代碼是,管理好代碼間的依賴性是不可缺少的一個環(huán)節(jié)。特別是庫文件的編寫中,減少代碼間的依賴性可以提供一個“干凈”的接口。下面這篇文章主要給大家介紹了關(guān)于C++中pimpl用法的相關(guān)資料,需要的朋友可以參考下。
    2017-08-08
  • C++通過CryptoPP計算Hash值的過程詳解

    C++通過CryptoPP計算Hash值的過程詳解

    Crypto++ (CryptoPP) 是一個用于密碼學(xué)和加密的C++庫,它是一個開源項目,提供了大量的密碼學(xué)算法和功能,本文小編給大家介紹了C++通過CryptoPP計算Hash值的過程,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評論