剖析C语言关键字之void,const,return

 更新时间:2022年01月07日 15:02:05   作者:我說  
这篇文章主要为大家介绍了C语言关键字之void,const,return,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

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.让看源码的童鞋知道这里不能被修改

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++ 排序插入排序实例详解

    C++ 排序插入排序实例详解

    这篇文章主要介绍了C++ 排序插入排序实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++基础概念讲述

    C++基础概念讲述

    这篇文章主要介绍了C++基础概念,​ 本次为C++的一个开篇,重点是更好的理解C++相对于其他编程语言的一个特性,之后会持续更新,本次专栏计划是掌握C++的基础语法以及常用特性,并且从细节上去理解,需要的朋友可以参考一下
    2021-12-12
  • C++11中lambda、std::function和std:bind详解

    C++11中lambda、std::function和std:bind详解

    大家都知道C++11中增加了许多的新特性,下面在这篇文中我们就来聊一下lambda表达式,闭包,std::function以及std::bind。文中介绍的很详细,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • C++ 实现球迷 今日头条面试题

    C++ 实现球迷 今日头条面试题

    这篇文章主要介绍了C++实现球迷今日头条面试题功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • VS编译出现MSB3073命令的解决方案

    VS编译出现MSB3073命令的解决方案

    =error MSB3073是Visual Studio编译器报出的错误,本文主要介绍了VS编译出现MSB3073命令的解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 详解c++种gmock单元测试框架

    详解c++种gmock单元测试框架

    这篇文章我们给大家分享了关于c++种gmock单元测试框架的相关知识点内容,有兴趣的朋友们学习下。
    2018-08-08
  • C语言实现C++继承和多态的代码分享

    C语言实现C++继承和多态的代码分享

    本文主要给大家简单讲诉了C和C++的区别以及如何使用C语言模拟实现C++继承和多态,并附上示例代码,是篇相当不错的文章,推荐给喜欢C语言的小伙伴们
    2017-07-07
  • 剖析C语言关键字之void,const,return

    剖析C语言关键字之void,const,return

    这篇文章主要为大家介绍了C语言关键字之void,const,return,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C++抽奖程序实现方法

    C++抽奖程序实现方法

    这篇文章主要介绍了C++抽奖程序实现方法,实例分析了C++随机数的生成技巧与抽奖程序的实现方法,需要的朋友可以参考下
    2015-07-07
  • IOS开发之UIScrollView实现图片轮播器的无限滚动

    IOS开发之UIScrollView实现图片轮播器的无限滚动

    这篇文章主要介绍了IOS开发之UIScrollView实现图片轮播器的无限滚动的相关资料,需要的朋友可以参考下
    2017-07-07

最新评论