c语言基础
文章平均质量分 77
C语言基础学习记录
野蛮生长的小VV
不以善小而不为,聚滴水而成江河!记录学习点滴,无关知识大小。
展开
-
结构体内存对齐 和 #pragma pack()
为了保证计算机读取数据的高效性,编译器通常在结构体的成员数据进行内存对齐,使每一个成员变量都对齐在自然边界上,同时也有一定的空间牺牲。我们重点考虑成员变量是如何对齐的:文章目录对齐规则(偏移规则)#pragma pack()改变默认对齐实例理解结构体嵌套时对齐对齐规则(偏移规则)每个成员按照其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中的较小的一个对齐,即min(n,sizeo...原创 2019-11-13 13:45:12 · 2710 阅读 · 0 评论 -
c语言交换两个数的值的几种方法
1. 临时变量法创建一个临时变量先保存一个数的值,然后再进行交换赋值,最后将临时变量的值赋给另一个变量void swap(int *x, int *y)//指针变量交换两个数的值,函数内部要交换两个数的值要通过指针交换{ int t = *x; *x = *y; *y = t;}2.异或法根据将某个数与另一个数连续与或两次,可得到本身。将两个数进行与或运算,再分别与本身做与或...原创 2019-03-23 10:06:08 · 26111 阅读 · 0 评论 -
c语言实现三子棋游戏
三子棋游戏你肯定是玩过的,今天我就用c语言实现一个简单的三子棋游戏这个游戏是玩家输入坐标和电脑和产生随机坐标来实现棋子的摆放。棋子需要二维数组来存放,将玩家走的棋子用’X‘表示,电脑棋子用‘ * ’,初始化的数组为‘ ’。先给大家看一下代码:#include<stdio.h>#include<stdlib.h>#include<time.h>#i...原创 2019-04-04 13:47:05 · 225 阅读 · 0 评论 -
c语言操作符详解
c语言运算法有以下几大类:算术操作符关系操作符逻辑操作符位操作符赋值运算符条件运算符逗号运算符原创 2019-04-17 17:33:06 · 1494 阅读 · 2 评论 -
c语言实现简易扫雷游戏
扫雷游戏是windows系统上原创 2019-05-07 22:49:04 · 839 阅读 · 0 评论 -
c/c++语言中strlen和sizeof的区别
关于sizeof的用法,我已经在c语言操作符详解和c语言32个关键字中详细说明。此篇不再赘述,看过这两篇博客的人肯定已经知道sizeof是一个c语言运算符,它可以计算一个变量或者类型的的字节长度。那么它和strlen()函数有何区别?区别:为了帮助大家理解上面的表格,举几个例子来说明一下,int main(){ char a[] = "abc\012abc"; char b[] = ...原创 2019-05-21 17:31:11 · 625 阅读 · 0 评论 -
判断系统的存储模式—大小端问题
大端模式:字数据的高字节存储在低地址中而字数据的的低字节存储在高地址中;小端模式:字数据的低字节存放在低字节中,而字数据的高字节存放在高地址中。例如:int i =0x00 00 00 01,那么i在大小端下的存放模式分别是这样:如何判断一个系统是大端存放还是小端存放呢?我们可以在一个4字节的数据上面截取低地址上的1个字节,如果低地址上截取的字节与原数据的低字节数据一致,说明该系统为小端存...原创 2019-06-13 11:09:45 · 287 阅读 · 0 评论 -
数据的隐式类型转换
在计算机中,数据在内存中以二进制形式存储,负数有三种表示方法:原码,反码,补码。任何正数的原码,反码,补码的形式均相同,而负数有不同的表现形式。数据在计算机中大都以二进制补码形式存储,原因是:数的原码表示形式简单,适用于乘除运算,但用原码表示的数进行加减运算比较复杂;引入补码之后,减法运算也可以用加法来实现,且数的符号位也可以当作数值一样参加运算,并且其他运算均是以假发为基础进行运算的;因此在...原创 2019-06-12 12:27:03 · 312 阅读 · 0 评论 -
c语言指针初级
指针作为初学者学习c语言的难点,也是检验是否掌握c语言的标志指针在c语言中其实就是一个变量,只不过它和普通变量有所不同,我们知道变量是用来存值的,指针也不例外,只不过它存的值是一个地址。首先我们定义一个指针 :基类型 * 指针变量名;int i=0;int* p=&i;printf("%d\n",p);printf("%d\n",*p);这里我们定义了一个int* 类型的指...原创 2019-08-12 23:23:33 · 255 阅读 · 0 评论 -
模拟实现string库函数下字符串拷贝函数strcpy()
今天来模拟实现strcpy()函数,该函数所实现的功能是拷贝字符串先来分析一下:字符串的拷贝不能使用‘=’直接赋给,而需要调用函数来进行逐个字节的拷贝,函数参数应为两个char类型的指针下面是我写的初稿:运行起来没什么问题,但是从软件工程的角度来看,该函数的程序健壮性太差,在使用中如果传给_Source为NULL时函数该如何处理?那么就有了以下函数:...原创 2019-03-23 09:53:43 · 1987 阅读 · 0 评论 -
冒泡排序及选择排序
冒泡排序对一组元素进行冒泡排序,从左向右或从右向左排序,每次对相邻两个数进行比较,根据自己需求(升序或者降序)决定是否调整顺序。每次完成一次冒泡,都在未排序列中会产出一个最大或最小值并将该值确定位置1.如果是将序列从右向左两两比较,那么每次冒出的最大数或者最小数将出现在最左边(在未排序的序列前面)2.如果序列是从左向右两两比较,那么每次冒出的最小数或最大数出现在最右边(未排序的最后面)(至...原创 2019-03-29 22:47:10 · 182 阅读 · 0 评论 -
c语言判断一个数是不是回文数
回文数定义:各位数字反向排列所得自然数n1与原数n相等,则称n为回文数—(来自百度百科)那么判断一个回文数,就是将该数倒置过来和原数比较,当两数相等时,该数即为回文数。那么这道题的重点就是如何将一个数倒置了。具体的倒置过程本人的思路是拆出原数的每一位,然后再通过迭代就可以得到倒置后的数。有做过水仙花数题的同学肯定都知道怎么拆数的。思路清楚后就开始实现了:int PalJudnum(int n...原创 2019-03-25 19:16:08 · 10320 阅读 · 4 评论 -
c语言内存移动my_mommove();拷贝函数my_momcpy();设置函数my_momset();
mommove();momcpy();momset();应用于内存增容。步骤如下:1,重新分配大空间给同类型指针p。2,将数据复制进新空间,然后将原来指针(t.data)j解放出来,即free(t.data);t.data=NULL;3,将内存容量更新bool Inc_Size(Seqlist&amp;amp;amp;t){ //t.data = (Elemtype *)realloc(t.da...原创 2018-12-27 23:51:40 · 1588 阅读 · 0 评论 -
c语言常见基本数据类型长度
#c语言基本数据类型有浮点型和整型##整型:64位系统下各类型的 字节长度基本整形 int 4短整型 short int 2长整型 long int 4双长整型 long long (int) 8(c99增加的)字符型 char 1布尔型 bool 1(c99增加的)注:C99中提供了一个头文件 &amp;amp;amp;amp;amp;amp;amp;amp;lt;stdbool.h&amp;amp;amp;amp;amp;amp;原创 2018-12-24 01:16:50 · 8021 阅读 · 0 评论 -
内存申请和内存调整函数malloc(),realloc(),calloc()用法
memove可以完全替代memcpy吗?realloc(sizeod()):空间增加时:参数为扩增后的总空间,而不是追加的空间1.当原有空间后有充足的空间可满足扩张,则直接在原有2.当追加的空间较大时,后续没有足够的空间时,则重新开辟空间,若再次开辟失败(再次分配时失败),则会出现内存内存泄露(原空间没有被释放)和数据丢失(原先指针不再指向原空间,失败时被赋为NULL)解决办法:将新开辟...原创 2018-12-30 10:38:31 · 2217 阅读 · 3 评论 -
c语言数组代表地址
以前只知道数组名代表数组首地址,a[5],即a=&amp;a[0];但今天偶然间遇到一道题,代码呈现给大家:#include&lt;stdio.h&gt;int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int*)(&amp;a + 1); printf("%d %d\n", *(a + 1), *(ptr - 1)); r原创 2019-01-05 22:54:02 · 2261 阅读 · 0 评论 -
c语言求两个数的较大数
分支和三目运算符两种方法求最大数://使用 c 语言编写程序,求两个整数的较大值。#include&amp;lt;stdlib.h&amp;gt;typedef int ElemType;ElemType Judgement_tow_num_size();int main(){ ElemType a, b; scanf(&quot;%d%d&quot;, &amp;amp;a, &原创 2019-01-23 20:29:51 · 4603 阅读 · 0 评论 -
求十个数中最大的数
十个数求最大数,简化为两个数进行九次大小比较。//使用 c 语言编写程序,求 10 个整数中的最大值。#include&lt;stdlib.h&gt;typedef int ElemType;ElemType Judgement_tow_num_size();//返回两个数中最大的数int main(){ ElemType a[10] = { 12, 23, 34, 45, 56, ...原创 2019-01-23 20:48:39 · 980 阅读 · 0 评论 -
c语言实现乘法口诀表的打印函数
实现一个乘法口诀表的打印,可输入阶数。#include&amp;amp;lt;stdio.h&amp;amp;gt;int main(){ int i, j, n;//n为输入的乘阶数。 scanf(&amp;quot;%d&amp;quot;, &amp;amp;amp;n); for (i = 1; i &amp;amp;lt;= n; i++) { for (j = 1;原创 2019-01-19 18:17:56 · 7653 阅读 · 0 评论 -
c语言32个关键字
在看到c语言深度解刨这本书时看到看到关键字这部分发现自己学了这么长时间对c语言关键字也不能全部讲出来,因此我便将c语言32个关键字做个小总结帮助大家记忆。c语言关键字有两类:一类是数据类型关键字;另一类是流程控制关键字一. 数字类型关键字A.基本数据类型(5个)voidcharintfiloatdoubleB.类型修饰关键字(4个)shortlongsignedun...原创 2019-03-13 08:59:01 · 527 阅读 · 0 评论 -
c语言中无类型void*指针的几大特性
void类型指针在使用中与其他类型指针不同,在使用中应注意:1.无类型指针不能对内存进行解释,只能获得对象地址int main(){ void *p; int n=sizeof(*p); printf(&quot;%d\n&quot;, n); return 0;}当程序编译到sizeof(*p)时报错,p不是指向完整类型的指针,也就是说编译器此时不知道该将p指针解释为多少个字节。2. 无类型指...原创 2018-12-26 15:10:31 · 933 阅读 · 2 评论