
c
qq_39412582
这个作者很懒,什么都没留下…
展开
-
深入理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
看到小猿的题目是不是开始怀疑自己学了个假c语言! 一个指针竟然有这么多用法,绕来绕去的,是不是有些头晕目眩呢,别怕,小猿这就来拯救你。首先,提三个问题 1、什么是数组? 2、什么是指针? 3、指针和数组之间有哪些关系?好,先解决第一个问题。 ① 什么是数组: 简单的理解数组就是存储相同类型数据的一个集合 例如:int array[10]={1,2,3,4},这就是一个简单的数组...原创 2018-04-18 15:45:49 · 529 阅读 · 1 评论 -
三子棋小游戏(C语言)
我们在C语言阶段,学的差不多就应该有能力写一些小游戏来检测我们C语言到底学的咋样,恰巧三子棋和扫雷应该是每一个程序员都会的,简单的C语言小游戏。拿到这个题目,我们首先应该要有一个清晰的思路,三子棋我们应该都是很熟悉的,就是一个简单的棋盘,然后需要两个人对弈,一人走一步,谁先将三颗棋子连成一条线谁就是赢家。然后,我们就应该动手操作我们的代码了。首先当然是建立一个工程,然后建立三个文件,gam...原创 2018-06-18 16:29:45 · 544 阅读 · 0 评论 -
C语言实现通讯录
今天写一个简单的C语言小项目,简易的通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 通讯录包含的功能: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 实现原理:利用C...原创 2018-07-27 19:37:18 · 597 阅读 · 0 评论 -
C语言之大小端详解
什么是大小端呢?如果学完C语言你还不知道这个东西那就说明基础太差了。 假设我们有下面这个例子:int main(){ int a = 1; return 0;}那么这个a在内存中是怎么存储的呢? 编译器给出的结果是: 看到这个结果是不是有点懵逼,a这个变量值是1 ,在内存中存储应该是0x 00 00 00 01才对啊,为什么编译器给出的却是0x 01 00...原创 2018-08-08 11:32:29 · 12902 阅读 · 3 评论 -
结构体内存对齐
结构体内存对齐规则: ●第一个成员在与结构体变量偏移量为0的地址处 ●其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处 注意的是:对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。(VS默认的是8 GCC默认的是4) ●结构体总大小为最大默认对齐数(每个成员变量除了第一个成员都有一个对齐数)的整数倍 ●如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大的对齐数的整数倍处,结...原创 2018-08-23 19:17:27 · 244 阅读 · 1 评论 -
打印100~200 之间的素数
题目要求:打印100~200 之间的素数先解释一下什么是素数?素数:素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。知道了定义,我们再来写这个代码就很简单了,看代码:int main(){ int i = 100; for (; i < 201; ++i) { if (1 == i % 2) { printf("%d ", i); } }...原创 2018-10-20 20:50:32 · 209 阅读 · 0 评论 -
交换两个数
在交换两个数我们大多数人只知道用第三个变量来实现交换,这里我提供两种不用第三个变量实现交换两个数的方法原创 2018-10-20 21:17:22 · 242 阅读 · 0 评论 -
求10 个整数中最大值。
学完循环语句之后我们再来写这个程序是不是so easy本文中我给的是数组形定义的十个数字,你们也可以自己输入任意个数字求最大值。#include <stdio.h>int main(){ int max = 0; int arr[10] = { 2, 1, 4, 3, 5, 8, 7, 9, 6, 0 }; int len = sizeof(arr) / sizeof(a...原创 2018-10-20 21:35:54 · 197 阅读 · 0 评论 -
求两个数的最大公约数
简介:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损。本文采用辗转相除法和更相减损两种方法解答。**辗转相除法:**辗转相除法, 又名欧几里德算法(Euclidean ...原创 2018-10-21 13:40:59 · 399 阅读 · 1 评论 -
C语言之动态内存开辟
在C语言当中有malloc,calloc,realloc,free三种方式进行动态内存管理,但是由于C语言当中的内存管理有很多的缺陷,稍不注意就会造成内存泄漏的风险,在C++中虽然可以继续使用C中的管理方式,但是不建议使用。 C++未解决这些缺陷提供了自己的内存管理方式,那就是new和delete两个管理内存的关键字。...原创 2018-11-04 23:54:28 · 1875 阅读 · 0 评论 -
动态内存管理常见面试题
学完C语言动态内存管理 和 C++动态内存管理我们就应该深入的去对比和了解两个的特性。一 、 malloc/free和new/delete异同点共同点:都是从堆上开辟空间,最后都需要手动释放不同点:malloc/delete是标准库函数,new/delete是操作符new创建对象时会调用构造函数+开空间 ;delete会调用析构函数,而malloc/free只会开空间,而不会调用构造...原创 2018-11-05 20:40:52 · 403 阅读 · 1 评论 -
C语言之函数栈帧
!!!非常重要以前我们知道在调用函数的时候会有寄存器来执行一些操作,常见的有ebp 、esp、eax、ebx、ecx等 而在函数调用过程中也会调用两个寄存器,一个是ebp,一个是esp。ebp指向的是栈底,esp指向的是栈顶。我们那下面这个例子来分析函数调用过程的具体细节:#include &lt;stdio.h&gt;int Add(int x, int y){ int ret =...原创 2018-11-21 22:37:27 · 436 阅读 · 0 评论 -
数据结构之栈及栈的应用(括号匹配问题)
栈简介:栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,其特点为 先进后出。 栈功能:可以将数据从一种序列变为另一种序列 注:图片来自网络 #pragma once#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>...原创 2018-04-11 15:43:31 · 348 阅读 · 0 评论 -
数据结构之链表面试题(约瑟夫环,判断链表带环求交点问题)
#pragma once#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int DataType;typedef struct Node{ struct Node* _pNext; ...原创 2018-04-11 15:30:42 · 250 阅读 · 0 评论 -
左旋字符串
题目要求:实现一个函数,可以左旋字符串中的k个字符。(右旋字符串同理)例如:ABCDE左旋两个字符串得到CDEAB代码如下(编译环境为VS2013):#define _CRT_SECURE_NO_WARNINGS 1#include #include #include #include//三步翻转法//void reverse(char *left,char*righ原创 2018-02-01 11:39:33 · 184 阅读 · 0 评论 -
调整数组,使得奇数在前偶数在后
题目要求:输入一个整数数组,实现一个函数,来该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析:最常用的的双指针法,设置两个指针p1,p2初始化指向数组的第一个数和数组的最后一个数。总的有以下四种情况 (1)如果p1指向的数为奇数则p1向后移到一位,如果p2指向的数是偶数则p2向前移到一位。 (2)如果p1指向的数为奇数则p1向后原创 2018-01-29 16:05:06 · 625 阅读 · 0 评论 -
杨氏矩阵
题目要求://杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); (题目出自剑指offer,曾经是华为的面试题)例如:数组: 1 2 3 4 5 67 8 9 代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include#include //方法一:最简原创 2018-01-29 14:58:20 · 236 阅读 · 0 评论 -
扫雷小游戏
//test.c#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("*******************************\n"); printf("*****1.play 0.exit****\n"); printf("***********************原创 2017-12-16 19:36:41 · 221 阅读 · 0 评论 -
判断输入任意的数字是否为素数
判断素数:基本判断思路在一般领域,对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。质数大于等于2 不能被它本身和1以外的数整除。#define _CRT_SECURE_NO_WANINGS 1#include #include int main(){int i, n, m;printf("please e原创 2017-11-10 21:21:13 · 2290 阅读 · 0 评论 -
打印九九乘法口诀表
法一:#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){int i, j, result;for (i = 1; i {for (j = 1; j {result = i*j;printf("%d*%d=%-3d ", i, j, result);}printf("\n");}retu原创 2017-11-10 20:36:38 · 937 阅读 · 1 评论 -
数组和指针的区别
本文转载自http://blog.youkuaiyun.com/imred/article/details/45441457实际上关于数组与指针的区别这个问题在《C专家编程》已经有很详细的阐释,但我想用自己的语言说一说我的理解。数组是指针?最近在做数据结构课设,其中一个函数发生了令人费解的错误,简化后的代码如下:#include <stdio.h>int main(){ char fo...转载 2018-03-16 19:54:28 · 182 阅读 · 0 评论 -
数据结构之静态顺序表(增删查改以及一些排序)
这里写代码片#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#define MAX_SIZE 10 typedef unsigned int size_t;typedef...原创 2018-03-24 20:53:45 · 367 阅读 · 0 评论 -
C语言知识点小结
代码如下: #define _CRT_SECURE_NO_WARNINGS 1#include #include #include int Is_left_rev(char *arr,char *p){原创 2018-02-01 12:56:03 · 159 阅读 · 0 评论