c语言

C语言运行时存储器分布

♀尐吖头ヾ 提交于 2020-02-05 14:05:21
程序在运行过程中,数据在存储器中是怎样分布的又是怎样变化的?堆栈在函数调用的过程中是怎样活动的?以下几点可能帮助读者解读此问题: 内存分布:当程序运行到main函数时,程序员定义的全局变量或者静态变量已经在内存中分配好了,当然是链接器加入的代码发挥的作用,同时还会初始化堆栈区域。具体存储器空间分布为:代码区→只读数据区→初始化数据区→未初始化数据区→堆区→······←栈区→命令行参数区,环境变量。不同的计算机架构和工具链,存储器分布可能有略微差别; 代码区:程序存储空间; 只读数据区:字符串常量,const修饰的全局变量和静态变量; 初始化数据区:初始化不为0的全局变量,初始化不为0的静态变量; 未初始化数据区:初始化为0的全局变量和静态变量,未初始化的全局变量和静态变量; 堆区:用于为程序员动态申请的变量分配空间; 栈区:用于为函数局部变量、参数、返回值自动分配空间,函数结束后自动释放空间。 命令行参数、环境变量区:操作系统中使用。 强调两点: 程序在进入main函数之前,已经完成数据在内存中的分配、初始化,包括数据区,堆栈区等。关于这部分代码对于开发者不可见,属于C标准运行时的一部分。 函数在调用和被调用过程中,都伴随着入栈和出栈的活动,因此栈发挥着重要作用。函数的局部变量、参数、返回值都存在栈区中。函数结束后,栈区空间自动释放,栈区担任着一个临时存储的角色

C语言寒假大作战02

好久不见. 提交于 2020-02-05 13:30:36
2.2.1 作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-3 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10260 这个作业的目标 使用函数、Switch语句来完成菜单程序 作业正文 如下 其他参考文献 https://baijiahao.baidu.com/s?id=1616367741584583839&wfr=spider&for=pc 2.2.2 设计思路和遇到的问题 设计思路:参考了书上的例题,声明自定义函数,循环,在用switch语句。 遇到的问题:刚开始没有看清题意,直接用了最基础的方法做,觉得6个printf...就是六个函数了,后面发现是要用自定义函数,改过来之后还好运行是正确的。在写循环的时候,一开始用的for语句(i=1;i<=5;i++),发现不管怎么样,在第五次输入什么都会结束运行,发现是i<=5这里错了,又不知道把5改成什么。后面发现,我为什么要用for不用while,while多简单啊,都不用考虑i<=几,感觉while语句用起来很方便! 2.2.3 程序结果截图 2.2.4 程序代码 2.2.5 你对“设计”这个词的理解 设计,感觉对我们这个专业来说一般是软件设计,程序设计(当然

C语言寒假大作战02

与世无争的帅哥 提交于 2020-02-05 12:23:58
作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-2/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10261 这个作业的目标 Gitee 与 git基础命令学习与使用 作业正文 https://www.cnblogs.com/szy5201314/p/12263076.html 其他参考文献 C语言编程 2.2.2 设计思路和遇到的问题 设计思路 题目要求了使用函数、Switch语句来完成菜单程序,所以思路比较清晰,首先定义题目要求的6个函数menu、help、error、firstgrade、secondgrade、thirdgrade。主函数main用来做选择菜单,再定义一个整型变量a用来接收输入的数字,并利用switch做出相应的操作,由于这个程序要循环运行,所以我用do...while循环当输入5时才退出循环结束程序。 遇到的问题 首先看了这个题目还是比较容易的,思路非常清晰,所以写代码的时候很轻松,只是刚开始的时候没有定义函数还有git的命令有点记不太清楚了。 2.2.3 程序结果截图 2.2.4 程序代码 #include<stdio.h> void menu(){ printf("操作列表:\n1)一年级 2

C语言寒假大作战02

◇◆丶佛笑我妖孽 提交于 2020-02-05 11:09:44
一. 作业头: 问题 答案 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10261 这个作业的目标 熟悉使用函数、Switch语句来完成菜单程序 作业正文 如下述博客 其他参考文献 https://baijiahao.baidu.com/s?id=1616367741584583839&wfr=spider&for=pc 二.设计思路和遇到的问题 设计思路:此题无非就是先设立函数模型,然后输出所有菜单信息,再用switch和while语句循环,最后得出菜单的逻辑结构。 问题:刚开始看到写这个代码我懵了一会,后面看了下参考资料后思路就明显了,具体的操作方面的问题还没有。 三.程序结果截图 来源: https://www.cnblogs.com/wl1314/p/12262636.html

C语言编程\C语言二级海量真题练习资源

妖精的绣舞 提交于 2020-02-05 09:23:30
C语言 海量真题练习资源 给大家分享一些C语言的真题练习资源,非常多,就不一一介绍了,也包含C语言二级考试真题,因此需要计算机考试同学也可以下载练手哦! 下载地址 https://download.csdn.net/download/qq_31473467/12094914 来源: CSDN 作者: 群帬羣 链接: https://blog.csdn.net/qq_31473467/article/details/103923687

【C语言】函数传参

我与影子孤独终老i 提交于 2020-02-05 04:44:21
文章目录 1、函数参数传递的两种方式 1.1、值传递 1.2、地址传递 1.3、C中没有引用传递 2、传递结构体 3、传递数组 3.1、数组做为参数传递 3.2、不允许将数组做为返回值 4、形参为空 5、不定长参数表 5.1、不定长参数表的原理 5.2、va_list 5.3、va_start 5.4、va_arg 5.5、va_end 5.6、不定长参数举例 1、函数参数传递的两种方式 1.1、值传递 # include <stdio.h> /* 变量x、y为Swap函数的形式参数 */ void Swap ( int x , int y ) { int tmp ; tmp = x ; x = y ; y = tmp ; printf ( "x = %d, y = %d\n" , x , y ) ; } int main ( void ) { int a = 10 ; int b = 20 ; /*变量a、b为Swap函数的实际参数*/ Swap ( a , b ) ; printf ( "a = %d, b = %d\n" , a , b ) ; return 0 ; } 输出: x = 20, y = 10 a = 10, b = 20 1.2、地址传递 # include <stdio.h> void Swap ( int * px , int * py ) { int

C语言 exit() _exit()

女生的网名这么多〃 提交于 2020-02-05 04:26:32
基础 在 main 中终断自己,并返回 1.0:sucess;1:failure;2:error _exit ( int status ) ; exit ( int status ) ; _Exit ( int status ) ; exit() and _exit() and _Exit() 三种终断进程的方法 方法|描述 –|-- _exit()|请求OS立刻终断进程,强行,不回收资源 exit()|C标准库函数,先回收资源,再终断 _Exit()|C标准库函数,本质是 _exit() 的包装 1.左图 exit 会先将buffer里的内容输出的屏幕,再退出 2.右图 _exit 不会等待,直接退出 3.可以调用 fflush() 将buffer内容输出 atexit() 退出回调 1.终断 exit() 时回调其他函数 /*exit_handler_demo.c*/ # include <stdio.h> # include <stdlib.h> void my_exit1 ( ) { printf ( "FIRST Exit Handler\n" ) ; } void my_exit2 ( ) { printf ( "SECOND Exit Handler\n" ) ; } int main ( ) { //exit handers execute in reverse

leetcode 386. 字典序排数 C语言

耗尽温柔 提交于 2020-02-05 04:16:05
给定一个整数 n, 返回从 1 到 n 的字典顺序。 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。 请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。 /** * Note: The returned array must be malloced, assume caller calls free(). */ int gIndex; void dfs(int *result, int value, int n) { int i = 0; if (value > n) { return; } result[gIndex] = value; gIndex++; value *= 10; for (i = 0; i <= 9; i++) { dfs(result, value + i, n); } return; } int* lexicalOrder(int n, int* returnSize){ int *result = (int*)malloc(sizeof(int) * (n + 1)); int i = 0; gIndex = 0; for (i = 1; i <= 9; i++) { dfs(result, i, n); } *returnSize = n; return

Python实训Day02-Python基础以及和C语言的比较

假装没事ソ 提交于 2020-02-05 03:39:48
Python与C的区别 特点比较 主要区别 特点比较 语言 主流软件 语法特点 C 微软的VS,CodeBlocks 结构化语言,利于 面向过程 编程,运行程序之前需要先编译 Python Pycharm,Jupyter 脚本语言, 面向对象 ,属于解释型语言(即不需要编译,在运行时转换成机器语言) 近年来由于Python语法的简洁,备受程序员青睐,而C语言也由于其简洁和结构完善,被广泛应用,值得一提的是,Python就是用C开发出来的。 主要区别 语法识别: 1)作用域:C语言中通过 { } 来划分作用域,而Python靠缩进 2)赋值语句:C语言中语句末尾要加 ; ,而Python不加,通过缩进判断语句 3)判断语句:C语言用括号括起条件,Python在后面加 : 除法符号: C语言中除法符号 / ,而Python中用 // 表示整数除法, / 表示浮点数除法 变量声明: C语言中需要提前声明变量,而Python由于其动态性不需要声明 Python中有一些C中没有的概念 列表 列表用 [ ] 标识,是 python 最通用的 复合数据类型 。 列表中可以用 [头下标:尾下标] 截取列表对应部分。从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾,如 ls[1:3] 截取的是第2到3个元素,且 不包括 第4个元素ls[3]. ls = [

CCF201412-1门禁系统(C语言)

时光怂恿深爱的人放手 提交于 2020-02-05 02:45:58
题目 问题描述   涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。 输入格式   输入的第一行包含一个整数n,表示涛涛的记录条数。   第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。 输出格式   输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。 样例输入 5 1 2 1 1 3 样例输出 1 1 2 3 1 评测用例规模与约定   1≤n≤1,000,读者的编号为不超过n的正整数。 C语言实现的源代码(100分) # include <stdio.h> # include <string.h> # define N 1000 typedef struct { int value ; //读者编号 int freq ; //第几次出现 } Number ; //定义结构体Number int main ( ) { int i , n ; scanf ( "%d" , & n ) ; Number number [ N ] ; int flag [ N ] , value ; memset ( flag , 0 , sizeof ( flag ) ) ; for ( i = 0 ; i < n ; i ++ ) { scanf