日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

剖析C語言關鍵字之void,const,return_C 語言

作者:我說 ? 更新時間: 2022-03-24 編程語言

return

首先我們弄清楚c語言內存分配的方式

在這里插入圖片描述

然后我們看一段代碼:

#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;
}

在這里插入圖片描述

當運行到printf函數的時候,s指向的內容仍是”hello world“,但為什么最后打印出來就是亂碼了?

在這里插入圖片描述

在這里插入圖片描述

我們先看棧區中內存的分配

當string函數執行完時,它創造的棧幀就被銷毀了,可這里的銷毀并不是將其的數據清零,而是將其設置為可覆蓋的數據

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

那是因為printf也是一個函數,也要創造空間,所以將string所創造的棧幀給覆蓋了

在這里插入圖片描述

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

void

一.可做為函數的通用接口

例:

在這里插入圖片描述

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

原因:

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

二.void不能修飾變量

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

三.void修飾函數返回值

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

假如不加,默認是int類型的返回值

const

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

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

在這里插入圖片描述

總結

原文鏈接:https://blog.csdn.net/m0_61719175/article/details/122292073

欄目分類
最近更新