C语言
ma_r
这个作者很懒,什么都没留下…
展开
-
C语言:通讯录实现增删查改排序打印清空退出功能
将通讯录分为三部分.h文件(声明函数、引用头文件、结构体)、.c文件(函数的是实现、主函数).h文件#ifndef __CONTACT_H__#define __CONTACT_H__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h&g...原创 2019-05-02 22:48:06 · 506 阅读 · 0 评论 -
C语言:计算器加减乘除的实现
计算器加减乘除的实现int Add(int x, int y){ return x + y;}int Sub(int x, int y){ return x - y;}int Mul(int x, int y){ return x * y;}int Div(int x, int y){ return x / y;}int main(){ int x = 0...原创 2019-05-03 12:38:48 · 5425 阅读 · 0 评论 -
C语言:猜数字游戏与模拟用户登录
猜数字游戏,在菜单栏请选择选择1开始游戏,将数字随机在0-100内,若所猜数字大于随机数,屏幕输出猜大了,若小于则输出猜小了,若等于则输出猜对了并可以重新生成随机数,再请选择中输入0,退出游戏。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <ti...原创 2019-05-03 13:01:41 · 660 阅读 · 0 评论 -
C语言:括号匹配问题
‘(’,’)’,’{’,’}’,’[’,’]'左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。eg:true: ([]){}false:([]{)}int main(){ char ch; int count = 0; //定义一个计数器来验证括号匹配情况 while ((ch = getchar()) != EOF)//当文件没有结束时用ch接收输入的信息 ...原创 2019-05-03 13:25:47 · 2115 阅读 · 2 评论 -
【C语言】结构体、枚举、联合(创建与访问)
1.结构体结构体类型创建struct Student //定义学生结构体{ //结构体成员变量 char name[20]; int age; char gender[5];}s; //分号不能丢,s为结构体类型结构体成员访问:"."struct Student { char name[2...原创 2019-05-19 22:08:39 · 414 阅读 · 0 评论 -
【C语言】结构体相关问题
为什么要内存对齐?1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。结构体对齐规则1.第一个成员永远放在结构体起始位置的偏移处2.从第二...原创 2019-05-19 22:25:11 · 224 阅读 · 0 评论 -
C语言:最小栈(栈的接口实现Init、push、pop、top、getmin、free)
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);mi...原创 2019-05-17 12:19:46 · 1820 阅读 · 1 评论 -
【浅谈】函数栈帧
C语言中,每个栈帧对应着一个未运行完的函数。栈帧也被叫做活动记录,它记录着函数的实现过程和函数调用。栈帧中保存了该函数的返回地址和局部变量。内存空间如图:在栈空间中发生的调用过程:函数调用发生的时候,先把函数参数(从右往左顺序压)压入stack,再压入函数调用的下条指令的address. 接着进入调用函数体中先执行"pushl %ebp"和"movl %esp, %ebp"(一般已经由...原创 2019-05-22 17:27:12 · 383 阅读 · 0 评论 -
【c语言】动态内存管理(总结)
为什么存在动态内存分配?开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。因此在这种情况下,要达到有效的资源利用,必须在运行时动态地分配所需内存,并在使用完毕后尽早释放不需要的内存,这就是动态内存管理原理。内存分配的方式:malloc/free、calloc、reallocmalloc/free:分配新...原创 2019-07-12 23:28:25 · 163 阅读 · 0 评论