
C语言
zy不迷路
我是一个小菜鸟
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
位运算常用操作总结
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 下面是我最近练习过程中遇到的一些位运算操作: *在一组数组中找到只出现一次的数: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> void fun(int *p,int...原创 2019-04-16 18:06:27 · 274 阅读 · 0 评论 -
c语言实现strcmp
c语言中strcmp函数是比较两个字符串,定义两个字符串str1和str2,字符串比较时是对应字符的ASCII码进行比较,当str1大时返回1,str2大时则返回-1,两个字符串相等时返回0. #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h...原创 2019-05-06 22:07:42 · 1355 阅读 · 0 评论 -
c语言编程实现喝汽水问题
首先来描述一下这个问题,1瓶汽水1元,两个空瓶换一瓶汽水,给20元,可以喝多少瓶汽水? 有20元,那么先这样想,20元就可以有20个空瓶,20个空瓶又可以换10瓶又会有10个空瓶,然后又可以换5瓶汽水,接着又会有5个空瓶,又接着换两瓶,剩余一个空瓶,此时又有两个空瓶可以换一瓶,喝完这一瓶又有一个空瓶,和刚才剩下的那个空瓶一起可以再换一瓶,这瓶喝完剩一个空瓶,但只有一个就换不了了,所以一共是:20+...原创 2019-05-07 21:31:17 · 837 阅读 · 0 评论 -
模拟实现strcat
概念: 将两个char类型的字符串连接,中间无空格 思路:1.定义两个字符串数组,再定义一个数组用于存放这两个数组的值; 2.为了使两个字符串相连,拷贝第二个数组里面的值时,需要获取第一个数组的’\0’存储的地方,将’\0’和’\0’之后的变成第二个数组的 值; 3.打印第三个数组; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>...原创 2019-05-07 21:48:40 · 137 阅读 · 0 评论 -
回调函数
简而言之,就是一个通过调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 普通函数与回调函数主要是在调用方式上有区别: 1.对普通函数的调用:调用程序发出对普通函数的调用后,程序执行立即转向被调用函数函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从出发调用的程序的角度看,这个过程为:“调用—>等待被调用函...原创 2019-05-12 21:34:08 · 155 阅读 · 0 评论 -
C语言文件操作总结
C语言中文件也是非常重要的一部分,首先文件是由文件内容和文件属性构成,目前阶段可以先认为文件都是在硬盘上存储的,当然这种说法不准确,但就目前所学知识是有限的,可以简单的先这样认为。 文件有两种:程序文件(以.c结尾) 数据文件(以.h结尾) 数据文件的类型:文本文件 , 二进制文件 二进制文件:顾名思义二进制文件就是数据在内存中以二进制形式存储,输出也是二进制。 文本文件:在外存上以ASC||...原创 2019-06-02 22:57:00 · 191 阅读 · 0 评论 -
程序的翻译和链接
程序的翻译简单来说就是将源文件转换成可执行程序。 下面有一张图可以形象的说明这个过程 从上图可以看出,源文件是通过编译器先转换成目标文件,目标文件再通过链接器转换成可执行程序。 那么程序的翻译具体分为那几步呢? 大的来说程序的翻译过程分为两步,分别是编译和链接,而编译又可以分为三步:1.预处理 2.编译 3.汇编 预处理(-E):预处理也包括四个步骤 头文件展开 宏替换 ...原创 2019-06-03 13:41:14 · 376 阅读 · 0 评论 -
结构体内存对齐
首先来回答一个问题,结构体的大小如何来计算? 看代码: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include <stdlib.h> int main() { struct s1 { char c1;//char类型的大小为1 int i;//int类型的大小为4 char c2; }; ...原创 2019-06-09 19:11:40 · 138 阅读 · 0 评论 -
指针例题练习
例题1: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include <stdlib.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&a + 1); printf("%d,%d", *(a + 1), *(ptr ...原创 2019-06-09 20:17:04 · 508 阅读 · 0 评论 -
位段,枚举,联合
首先问题来了,什么是位段? 位段的声明和结构体是类似的,但有两点是不同的: 1.位段的成员必须是 int ,unsigned int ,或signed int . 2.位段的成员名后边有一个冒号和一个数字(该数字就代表该变量占开辟空间的大小即若干个bit位)。 来看一个例子: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> ...原创 2019-06-10 22:56:06 · 134 阅读 · 0 评论 -
动态内存管理
为什么要存在动态内存分配呢?在这之前我们已经掌握了定义一个整形变量就是在栈上开辟四个字节,定义一个数组就是在栈上开辟一段来内需的空间。这两种开辟空间的方式有两个特点: 1.空间开辟大小是固定的。 2.数组在申明的时候,必须指明数组的长度,它所需要的内存在编译时分配。 以上两种方式开辟空间的大小都是在编译时开辟的,但有时候需要开辟空间的大小在程序运行时才能知道,所以便需要动态内存开辟空间。 动态内存...原创 2019-06-11 13:13:48 · 104 阅读 · 0 评论 -
c语言思维导图
原创 2019-07-16 09:50:54 · 166 阅读 · 0 评论 -
C语言实现strcpy
c语言中本身就有函数strcpy,其功能是复制字符串,遇到\0结束,因为复制过程没有复制\0,所以需要在循环完之后给字符串赋\0. #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> char *Strcpy(char *sub, char *arr) { if (sub == NU...原创 2019-05-06 21:46:02 · 2442 阅读 · 0 评论 -
数组问题
给定一个数组,将奇数排在前面,偶数排在后面,首先理一下思路,先定义一个left和一个right,right从最后一个元素开始访问,当下标为left的元素为奇数时left++,当下标为right的元素为偶数时right–,如果下标为left的元素为偶数,下标为right的元素为奇数,就交换,当然大前提是left<right,这样就实现了把奇数排在前面,偶数放在后面的要求。 #define _C...原创 2019-04-25 16:22:07 · 149 阅读 · 0 评论 -
数组传参
数组作为参数传递的是地址,传递时是将数组的首地址传递给相应的参数,接受数组的参数要么是一个数组,要么是指针类型的变量。 实参的类型要与形参的类型相匹配 `#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #define ROW 3 #define COL 3 /*void Print...原创 2019-05-08 15:53:45 · 961 阅读 · 0 评论 -
数据在内存中的存储
1.数据类型 char 字符数据类型(1字节) short 短整型 (2字节) int 整形(4字节) long 长整形(4字节) long long 更长的整形(8字节) float 单精度浮点数(4字节) double 双精度浮点数(8字节) *类型的意义:1)使用这个类型开辟内存空间的大小。 2)如何看待内存空间的视角。 类型的分类:整形家...原创 2019-04-20 23:14:37 · 222 阅读 · 0 评论 -
浮点数在内存中的存储总结
1.浮点数家族:float ,double, long double 首先应明确,浮点数和整数的存储是不一样的。 先来看一个浮点数存储的例子: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int n = 9; float *pFloat = ...原创 2019-04-27 18:34:11 · 254 阅读 · 0 评论 -
杨辉三角
杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合,要打印一个简单的杨辉三角,首先来理一下思路,总体上是一个二维数组,先观察一下,不难发现,第一列和i=j(对角线)那一列的元素值都为1,所以可以先把这两列特殊的给打印出来,接着观察剩下的元素,他们的值都为a[i-1][j-1]+a[i-1][j-1],这样的话...原创 2019-04-18 18:09:13 · 242 阅读 · 0 评论 -
C语言位运算
位运算对于初学者来说是C语言中的难点内容,除了我们所熟知的算法之外,有时用位运算的算法,会使计算过程简便很多,这里总结了一些位运算的例题: 写一个函数返回参数二进制中1的个数 法一: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int count_one_bits(unsig...原创 2019-04-18 18:16:05 · 132 阅读 · 0 评论 -
字符串左旋问题
字符串左旋k个字符看起来毫无头绪,仔细想想也会有规律,左旋即就是先让\0右移一位,再让数组首元素放到原来\0的位置,这是左旋一位的情况,如果左旋两位的话,就在刚才的基础上再重复操作一次,数组传参推荐使用传址,函数就会定义一个指针变量指向数组首元素,另外函数的返回值也应是指针类型,返回数组首元素的下标,才能正确输出。 #define _CRT_SECURE_NO_WARNINGS 1 #includ...原创 2019-04-23 22:45:54 · 137 阅读 · 0 评论 -
C语言指针总结
1.指针家族: 指针有很多种类型:字符指针,数组指针,指针数组指针,整形指针等等 首先来了解一下指针的概念: * 指针也是变量,只不过它是用来存地址的 * 指针的大小是固定的,在32位平台上是4个字节,在64位平台上是8个字节 * 指针有类型,指针的类型决定了指针加减整数的步长,即指针加一减一就是加上或减去其所指类型的大小。 * 指针的运算 2. 字符指针(char *) #define _C...原创 2019-04-28 18:09:49 · 187 阅读 · 0 评论 -
字符串左旋k个字符
解决这个问题,有两种解题思路,首先来说第一种思路,先定义一个指针指向字符串的首地址,再用tmp 保存首元素,依次把元素往前移,最后把tmp里的值放在空出来的位置,循环k次就实现了左旋k个字符;第二种思路,把字符串分成两部分,先逆置前一部分,再逆置剩下的部分,最后整体逆置,也可实现左旋k个字符。 左旋k个字母 #define _CRT_SECURE_NO_WARNINGS 1 #include<...原创 2019-05-04 19:32:49 · 184 阅读 · 0 评论 -
C语言const总结
const是C语言中的关键字,具有着举足轻重的地位。它限定一个变量不允许被修改,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解对方的程序也有一定帮助。 const修饰的变量有什么特点呢?const所修饰的常变量是常量中的一种,这里需要举例来说明,首先,先定义一个num初始化值为5,然后给它赋值为10,接着输出结果,num的值是10,当然这...原创 2019-04-24 16:17:31 · 174 阅读 · 0 评论 -
c语言中的const的用法
const是C语言中一个十分重要的修饰 我总结了它的含义使用以及作用如下 1.修饰的数据类型是常类型,常类型的变量或对象的值不能被改变 const int i=10; int a[i];等价于int a[10]; 2.便于进行类型检查,使编译对处理内容有更多的了解,消除了一些隐患。 3.方便的进行参数的调整和修改(类似于宏定义) 4.可以保护被修饰的东西,防止被意外修改,增强程序的健壮性。 5.可...原创 2019-04-19 22:35:56 · 498 阅读 · 0 评论 -
杨氏矩阵
根据杨氏矩阵的规律可知,左上角是最小元素,右下角是最大元素,进行比较一次只能排除一个。而利用左下角或者右上角对比,一次可以排除一行或一列。 .当右上角大于要查找的数字时,排除一行; .当右上角大于要查找的数字时,排除一列; .相等则返回要查找数字的下标; .全部查找失败则返回-1; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> ...原创 2019-05-04 20:07:07 · 119 阅读 · 0 评论 -
打印二维数组
打印二维数组的方法有很多,我们知道,二维数组传参时会发生降维问题,降维成指向其内部元素类型的指针,在这里打印二维数组,形参可以是二维数组,也可以是数组指针,还可以是二级指针,代码如下: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<stdlib.h> //void print(int arr[3]...原创 2019-05-04 20:23:16 · 437 阅读 · 0 评论 -
Java入门
原创 2019-07-16 10:40:58 · 104 阅读 · 0 评论