![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 59
从入门到捕蛇者说
这个作者很懒,什么都没留下…
展开
-
C语言-设计模式
设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。原创 2024-04-22 15:19:26 · 977 阅读 · 1 评论 -
双向链表的增删改查
单向链表特点:1.我们可以轻松的到达下一个节点, 但是回到前一个节点是很难的.2.只能从头遍历到尾或者从尾遍历到头(一般从头到尾)双向链表特点1.每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 实现起来要困难一些2.相对于单向链表, 必然占用内存空间更大一些.3.既可以从头遍历到尾, 又可以从尾遍历到头双向链表的定义:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。原创 2023-03-17 14:29:14 · 1109 阅读 · 1 评论 -
【VS开发】组播(多播)的C程序实战
每个人都有不同的认知规律和习惯, 有的人喜欢搞一套严密的大理论, 论述起来滔滔不绝, 不管自己懂不懂, 反正读者/听者是没搞懂。 有的人喜欢从实践出发, 没看到代码, 不运行一下, 不看到结果, 就不太舒服。 我感觉, 我偏向后者, 必须有一个结果作用于我, 我才有感触。比如初学C语言, 我也很不喜欢老师总在讲什么原码, 反码和补码, 讲什么 32767 + 1 为什么等于-32768, 讲什么m.nf%控制输出的具体含义. 我更喜欢搞个阶乘运行一下来玩玩, 搞个简单的界面问答系统感知一下, 搞个排序或者原创 2022-09-02 09:15:30 · 374 阅读 · 0 评论 -
二维数组和指针详解(笔试面试)
在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有 “缝隙”。以下面的二维数组 a 为例:int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };从概念上理解,a 的分布像一个矩阵:0 1 2 34 5 6 78 9 10 11但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存:C 语言中的二维数组是按行排列的,也就是先存放 a [0] 行,再存放原创 2022-05-23 18:33:58 · 202 阅读 · 0 评论 -
C语言中数组名和指针的区别及笔试题目
C语言中数组名和指针的区别1: 指针是一个变量,而数组名不是。数组名是数组的首地址,即它本身就是一个地址。2:假设a是一个数组名,而p是一个指针,当你使用 a 和 &a 时,得到值是一样的,都是数组的起始地址。而使用 p 和 &p 时,得到的值是不一样的, p 表示指针 p 所指向的地址,而 &p 表示 p 这个变量的地址。再假设p = a;则 p 就表示数组a的起始地址,而&p是存储数组a的起始地址的那个地址。 这是因为编译器把a当成数组首地址,而&a当作数组第一个原创 2022-05-23 09:53:52 · 679 阅读 · 0 评论 -
用C语言编写一个俄罗斯方块小游戏
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#include <conio.h>#include <windows.h>#ifdef _MSC_VER #if _MSC_VER <= 1200 #error ? #else #if _MSC_VER >= 1600 #include <原创 2022-04-22 09:07:50 · 618 阅读 · 0 评论 -
段错误产生原因及简单的调试方法(解决树莓派编译没问题,运行时出现Segmentation fault)
段错误产生原因1.访问不存在的内存地址如下面代码,ptr没有申请空间就直接拷贝数据:#include <stdio.h>#include <string.h>#include <stdlib.h>int main(int argc, char *argv[]){ char *ptr = NULL; //This is the wrong implementation: strncpy(ptr, "abc", 3);//ptr没有申请空间就原创 2022-04-21 08:41:11 · 1582 阅读 · 0 评论 -
C语言输入输出方式
C语言除了常用的scanf和printf输出方式,还有getchar()输入一个字符,putchar();输出一个字符,puts()输出一个字符串,gets()输入一个字符串。#include<stdio.h>int main (){ char c; char a[5]; puts("输入一个字符"); c = getchar(); printf("你输入的字符是\n"); putchar(c); getchar();//吸收回车原创 2022-04-14 21:15:36 · 2326 阅读 · 0 评论 -
C语言回车键被scanf或getchar()函数吸收怎么办
在C语言中,在输入过程中,用回车键换行时,因为回车键也是字符,所以可能会被后面的scanf吸收,即将回车赋值给后面的字符型变量。#include<stdio.h> int main (){ int a; char c; scanf("%d",&a); scanf("%c",&c); printf("%d\n",a); printf("%c\n",c); return 0;}以上代码中如果第一个scanf输入原创 2022-04-14 20:20:02 · 1301 阅读 · 0 评论 -
Source Insight的入门使用
建立工程如果想让已有的代码文件产生联系,需要建立工程。1.在已有代码文件夹里,新建一个文件夹si2.点击Project -> New Project3.输入刚刚建立的si文件夹的路径,并给工程命名后点击OK4.点击OK5.通常我们习惯在源码目录底下建立文件夹si的好处是在建立工程时方便找到源代码6.点击确定后点击close关闭即可窗口显示让各代码文件产生关联1.点击Project -> Synchronize Files2.点击ok3.关联文件的好处在于你原创 2022-03-19 20:49:27 · 2738 阅读 · 0 评论 -
c语言输出保留任意小数
printf()函数默认保留6位小数printf("%.nlf",value); //表示保留n位小数printf("%.*f",n,value); // n表示小数的位数,value表示结果printf("%m.nlf",value); //表示控制宽度为m,保留n为小数,靠右对齐printf("%-m.nlf",value); //表示控制宽度为m,保留n为小数,靠左对齐//当控制宽度小于数值的位数时,将以实际数值宽度为准printf("%.lf",value); //表示保留整数原创 2022-03-18 19:58:07 · 4749 阅读 · 0 评论 -
C语言的指针各种用法
指针各种用法1、指针数组多个指针叫做指针数组,数组中的每一项都是一个指针变量。#include<stdio.h>int main(){ int a = 1; int b = 2; int c = 3; int *parray[3]; parray[0] = &a; parray[1] = &b; parray[2] = &c; int i; for(i=0;i<3;i++){原创 2021-08-22 17:45:43 · 4138 阅读 · 0 评论 -
设计模式——工厂模式
为啥学设计模式设计模式有23种,我所会使用的模式为工厂模式,学习设计模式的主要原因是,以前写代码写的很乱,添加工程的时候容易导致程序其它部分的代码被破坏,所以要学习设计模式。面试回答:能让代码更加稳定,拓展性更强的一系列软件组织的方法有23种,我使用过工厂模式。什么是设计模式https://www.runoob.com/design-pattern/factory-pattern.html设计模式通常描述了一组相互紧密作用的类与对象。建筑设计领域设计引入到计算机科学中来的。什原创 2021-08-20 11:43:31 · 128 阅读 · 0 评论 -
C语言基础——字符串操作
一、字符串的常用定义 char str[5] = {'a','b','c','d','e'};//第一种方式,最傻方式 char str2[6] = "abcde";//第二种方式 char str3[] = "abcdefefsdfg";//第三种方式,数组元素个数不写,会根据真实大小来默认分配 char *pstr = "hello world !"; printf("%s\n",pstr);//字符串用格式占位符%s表示,不需要用i的下标遍历二、字符串原创 2021-08-06 09:44:12 · 3429 阅读 · 0 评论 -
链表的增删改查常用方法
链表的定义struct Test{ int data; struct Test *next;};链表的遍历void printLink(struct Test *head){ struct Test *point = head;//定义point链表指针作为索引指向链表头 while(point != NULL){ printf("%d ",point -> data);//打印链表头数原创 2021-07-06 23:56:47 · 169 阅读 · 1 评论