
C语言基础入门
文章平均质量分 61
C语言基础入门
aFakeProgramer
Adaptive AUTOSAR技术专家,2024 AUTOSAR中国官方TOP培训讲师。深耕汽车电子软件领域,精通Adaptive AUTOSAR架构及RTA-VRTE工具链,实战经验丰富。深入掌握SOME/IP、IPC、DDS、DoIP、UDS、TSN等通信协议,熟悉SOA设计、V2X与车载网络安全。熟练使用C++和Python进行系统开发与集成,具备MQTT、加密机制等智能网联技术应用能力。致力于将复杂技术通俗化,推动汽车软件架构向服务化、智能化发展。持续分享Adaptive AUTOSAR、DDS、TSN及车载以太网等前沿技术实践,助力工程师快速掌握下一代汽车电子开发核心技能。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言数组深度剖析:从一维到多维的完全指南
始终进行边界检查- 防止缓冲区溢出优先使用栈数组- 性能更好,自动管理内存注意数组退化- 函数参数中数组会退化为指针利用缓存局部性- 按行访问多维数组合理使用const- 保护只读数组数据避免VLA在嵌入式- 栈空间有限,谨慎使用。转载 2025-09-12 10:51:47 · 43 阅读 · 0 评论 -
C语言指针终极指南:彻底搞懂让人头疼的指针
很多教程上来就讲语法,这是错误的!我们先从本质理解。指针就是地址,地址就是门牌号!你的家有个门牌号(地址)别人通过门牌号找到你家(通过地址访问内存)指针变量就是用来存储这个门牌号的小本子指针概念图解指针学习路线图指针确实是C语言的难点,但也是精华所在。掌握了指针,你就掌握了C语言的灵魂。指针就是地址,理解这个本质最重要多练习,从简单到复杂循序渐进重视内存管理,养成良好习惯遇到问题多调试,理解程序执行过程相信通过这篇文章的学习,你已经对指针有了全新的认识。转载 2025-09-12 10:49:35 · 47 阅读 · 0 评论 -
C语言在终端中打印出一个红色闪烁的心形图案
这段代码会在终端中打印出一个红色闪烁的心形图案。注意,控制台的颜色和闪烁效果可能因不同的终端设置而有所不同。依照这个数学公式来画。原创 2025-08-07 11:53:36 · 281 阅读 · 0 评论 -
一篇文章完全讲解C语言指针
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。为什么需要指针?指针解决了一些编程中基本的问题。第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然小伙伴们也可以通过数据的复制达到相同的效果,但是这样往往效率不太好。因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都...转载 2021-04-28 10:55:14 · 323 阅读 · 0 评论 -
一篇文章完全讲解C语言指针
https://mp.weixin.qq.com/s?__biz=MzU3NDU5NDczMw==&mid=2247504309&idx=5&sn=5421ee86fb1be92b43d99f0344983afe&chksm=fd329a77ca4513619f9e718190d8bd4f415125e95d3036807b7e72a61a4dd0d774624a80acb9&mpshare=1&srcid=0330VKqqw5P5jEB8CpmUqrQa&a转载 2021-03-30 17:55:48 · 182 阅读 · 1 评论 -
分治法,迭代与动态规划及贪心算法感悟
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。1.分治法 分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治模式在每一层递归上都有三个步骤:...转载 2020-03-10 14:01:44 · 878 阅读 · 0 评论 -
选择排序和冒泡排序
void select_sort(int a[],int n)//选择排序{ //选择排序,每次选择最小的放在第一个位置,然后下次从第二个位置开始 for(i=0;i<n-1;++i) { j=i;//给下标放在一开始的位置 for(k=i+1;k<n;++k) { if(a[k]&l...翻译 2018-08-01 15:34:38 · 184 阅读 · 0 评论 -
c与c++的区别
相同:C++ 是在C语言的基础上改进的,C语言的很多语法在 C++ 中依然广泛使用,例如:C++ 仍然使用 char、short、int、long、float、double 等基本数据类型;C++ 仍然使用 if...else、while、for、switch、break 等分支或循环结构;C++ 仍然使用 +、-、*、/、%、++、--、<<、>> ...转载 2018-07-30 21:57:23 · 157 阅读 · 0 评论 -
c++实现 日期加一天的函数
bool isLeapYear(int year){ if((year%4==0 && year%100!=0)||(year%400==0))//判断闰年 return true; return false;}void add(int &year,int &month,int &day){ day++; if(isLeapYear(...原创 2018-04-18 11:04:52 · 4478 阅读 · 0 评论 -
翻转句子中单词的顺序
#include "stdafx.h"#include "iostream"#include <windows.h>#include <stdlib.h>#include <stdio.h>using namespace std;//需要考虑的不是翻转句子中的字符顺序,而是各单词出现的顺序void reverse_word(char *pBegin...翻译 2018-03-29 17:19:53 · 282 阅读 · 0 评论 -
交换两个字符串
swap(char **p1, char **p2){ char *p; p = *p1; *p1 = *p2; *p2 = p;}void main(){ char str1[] = "12345"; char str2[] = "ABCDEFG"; char *p1 = str1, *p2 = str2; printf...转载 2018-03-28 14:09:48 · 10770 阅读 · 2 评论 -
翻转c风格的字符串
这里的字符串是c风格的字符串以'\0'结尾#include <stdio.h>using namespace std;void reverse_string_01(char *);void reverse_string_02(char *);void swap(char &a,char &b);//void swap(char **a,char **b);i...翻译 2018-03-28 14:07:55 · 164 阅读 · 0 评论 -
c语言之文件学习
文件是相关信息的集合文字信息、声音信息、图形信息文件的取名:主文件名.扩展名文件的分类:(c 程序中)A:文本文件B:二进制文件(data)把结构体的信息写入的文件c程序可以对文件进行操作读操作:从文件里面把文件的内容读取出来,并输出到屏幕。它不会改变文件的内容写操作:把一些内容往文件里面写入。它一定会改变文件的内容c程序如何对文件操作的呢?通过文件指针和一些函数对文件进行操作的什么是文件指针?这...翻译 2018-03-28 11:11:39 · 440 阅读 · 0 评论 -
关于字符串前导*的移动/删除的几种情况
1、编写一个程序把所有字符串的前导*保留,其他的*号都删除效果: ***shd***swbd*dwh 转换成 ***shdswbddwh算法分析,先研究一个字符串char a[100]="***shd***swbd*dwh",b[100]="";int i,j,k=0;puts(a);for(i=0;a[i];i++){ if(a[i]!=...原创 2018-03-06 16:22:53 · 1988 阅读 · 1 评论 -
c语言——指向字符串的指针
字符串是用双引号括起来的0个或多个字符,例如:"123"。原创 2018-03-13 13:43:32 · 12827 阅读 · 3 评论 -
c语言常用小知识点总结1
#define 用来定义宏常量格式:#define 标识符(大写字母) 常量 #define PI 3.14 //注意后面是不加;分号的 常用字母的ASCII码 'a'=97 'A'=65 '0'=48 变量的输出printf("参数",变量名); 字符串%s char %c int %d float %floatprintf(...原创 2018-08-15 14:20:03 · 412 阅读 · 0 评论 -
C结构体中数据的内存对齐问题
转自:http://www.cnblogs.com/qwcbeyond/archive/2012/05/08/2490897.html 32位机一般默认4字节对齐(32位机机器字长4字节),64位机一般默认8字节对齐(64位机机器字长8字节) 1.先看下面的例子:struct A{ char c1; int i; short s; int j;...转载 2018-08-20 11:14:01 · 321 阅读 · 0 评论 -
求出现在字符串1而没有出现在字符串2中的字符
编写一个函数,它的功能是将未在字符串s中出现,而在字符串t中出现的字符,型参一个新的字符串放在u中,u中的字符按原字符的顺序排列,但要去掉重复字符至少会想到去考察t,以t为标准s="12345";t="224677";u="67" //方法一:void funa(char *s,char *t,char *u){ int i,j,k=0,m; for(i=0;i<...原创 2018-08-20 15:39:01 · 832 阅读 · 0 评论 -
strcpy的使用
#include <iostream>#include <string.h>using namespace std;int main(){ char data[]={"dhewdwehkfew qwdhqwhdj qwhdwqhd"}; cout <<data<<endl; char s1[6]="china" ...原创 2019-09-06 09:44:49 · 370 阅读 · 0 评论 -
写一个c程序,从一个字符串中提取出关键字后面的数字
本文展示了C++中处理键值对字符串的两种方法:1)使用stringstream和map解析"ObjectID:453,MessageID:236"格式的字符串,包括分割、去空格、类型转换和错误处理;2)演示strstr函数查找子串的基本用法。代码示例包含字符串转换(getline/stoi)、数据结构(map)操作和子串查找(strstr)等常见字符串处理技术,适用于配置文件解析等场景。原创 2019-08-15 21:29:46 · 1510 阅读 · 0 评论 -
C 可变参数
有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。int func(int, ... ){ . . . } int main() { func(2, 2, 3); func(3, 2, 3, 4);...转载 2019-07-18 15:02:31 · 161 阅读 · 0 评论 -
难得的c语言经典面试题
• 变量的生存期,栈和堆的区别,变量的初始化问题,传指针和传值的实质 传指针的实质是传值,传值的时候,我们是做了一个复制品.在函数中只是对复制品在操作.进入函数和返回函数都是这个道理,经历了一个复制的过程.举个例子(csdn上的一个例子),这个程序的作用是从控制台读取两个数,存到数组中,然后输出.但这两种方式中有一种是错误的.#include <stdio.h>#inc...翻译 2019-06-27 21:59:57 · 764 阅读 · 0 评论 -
电脑编程的基础知识——编译器和连接器
核心提示: 我从没见过(不过应该有)任何一本C++教材有讲过何谓编译器(Compiler)及连接器(Linker)(倒是在很老的C教材中见过),现在都通过一个类似VC这样的编程环境隐藏了大量东西,将这些封装起来。在此,对它们的理解是非常重要的,本系列后面将大量运用到这两个词汇,其决定了能否理解如声明、定义、外部变量、头文件等非常重要的关键。编译器: 把源代码编译成目标文件 ...转载 2019-06-27 12:11:23 · 2481 阅读 · 0 评论 -
将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变
https://blog.csdn.net/roma823/article/details/6388591转载 2019-06-17 09:53:09 · 1046 阅读 · 0 评论 -
c语言 推箱子游戏实现
#include <iostream>#include <stdlib.h>#include <conio.h>using namespace std;int arr[9][11] ={ { 0,1,1,1,1,1,1,1,1,1,0 },//0代表空地 { 0,1,0,0,0,1,0,0,0,1,0 },//1代表墙 {...原创 2019-06-09 00:00:01 · 693 阅读 · 0 评论 -
神一般的C语言指针,你看懂多少?
神一般的C语言指针,你看懂多少?今天阅读《C/C++程序员面试指南》中指针一块,以前一知半解的指针问题顷刻间懂了。下面,可以做个测试,如果下面的指针问题你能够全都解答正确,那么你的C语言功底真是神一般的了。1.int *p;2.int **p;3.int *p[10];4.int (*p)[10];5.int *p(int);6.int (*p)(int);7....转载 2019-06-06 10:07:35 · 155 阅读 · 0 评论 -
什么是回调函数?
为了弄明白这种函数的奥妙,首先提出三个问题:1. 回调函数是什么东西?2. 回调函数怎么开发,怎么使用?3. 回调函数的作用,应该在什么情况下使用? 带着问题来学习,有目的!呵呵,个人经验。打开baidu.com、google.cn搜索了好多资料,如下:顺便提一下,某君的一个签名很让我佩服:1好好活着,因为我们会死很久。2五千年...转载 2018-10-23 10:34:50 · 266 阅读 · 0 评论 -
生日快乐音乐小程序
这是一个用C++编写的《生日快乐歌》播放程序,主要功能是打印祝福语并播放音乐。程序使用Windows API的Beep函数生成音符,通过两个数组分别存储25个音符的频率(需乘以5得到实际值)和持续时间(毫秒)。play_music函数循环播放这些音符,播放完最后一个后暂停500毫秒再重复。main函数首先输出"happybirthday!",然后调用play_music开始播放。程序展示了如何使用Beep函数实现简单的音乐播放功能。原创 2018-03-13 11:22:24 · 10410 阅读 · 0 评论 -
两个字符型数组,a[]="abcdefgh",用户输入一个值n,把数组a中右边n个字符复制到数组t中,最后输出数组t的值。
两个字符型数组,a[]="abcdefgh",用户输入一个值n,把数组a中右边n个字符复制到数组t中,最后输出数组t的值。算法分析:定义两个字符型数组char a[]="abcdef123gh",t[20]="",i,j=0,n;printf("请输入一个数给n:");scanf("%d",&n);printf("%d\n",strlen(a));if(n>=原创 2018-03-06 10:33:02 · 454 阅读 · 0 评论 -
指向一维数组的指针学习笔记
main(){ int a[]={2,4,6,8,10},y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) { y+=*(p+x);//1+4+6+8 } printf("y=%d",y);//19} main() { int a[]={2,4,6,8,10,12,14,16,18},y=1,x,*p; p=&a[2]; p...原创 2018-03-12 14:10:42 · 1405 阅读 · 0 评论 -
指向二维数组的指针学习笔记
二维数组与一维数组的关系二维数组的指针指向一维数组的指针一维数组的情况下:数组名代表数组首地址*(a+i)=a[i]二维数组与指针int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; a[0] a[1] a[2]说明:二维数组的行指针指向一维数组 a,a+1,a+2 行指...原创 2018-03-12 13:59:50 · 3982 阅读 · 1 评论 -
c语言之指针之谜
变量地址的意义指针的定义指针的赋初值通过指针改变变量的值 内存:(锅) A:在计算机中有一个很大的处理场 B:程序都是在内存中运行的 C:总结:数据的处理场地外存:(电冰箱)数据的存放场地 当我们编写一个c程序,并运行后,它也会放在内存中 什么是指针: 1、c程序要运行,都是在内存中来运行的 2、在c程序中一般会有很多变量,windows就会为程序中的每一个变量分配一个存储单元, ...原创 2018-03-09 15:32:35 · 408 阅读 · 0 评论 -
c语言之宏学习笔记
宏 宏 什么是宏? 1、 用一个字符串表示有意义的常量或常量表达式被称为宏 2、 使用宏可以增加程序的灵活性 3、 宏为了区分变量一般用大写字母,也可以用小写字母 4、 宏不是语句,所以在定义宏的时候不要加分号,若加了则会连同分号一起替换 5、 宏可以嵌套定义 6、 宏一般写在文件的开头,如果有头文件,则放在头文件的下面 7、 在字符串里面即使有宏名也不做替换 8、 宏的运...原创 2018-03-15 10:26:49 · 312 阅读 · 0 评论 -
指向函数的指针与指针数组学习笔记
指向函数的指针1 char *p ; //指向字符串的指针2 int *p; //指向整型变量的指针3、int a[4]={1,2,3,4},*p=a; //指向一维数组的指针4、 int a[3][4]={...},(*p)[4]=a;// 指向二维数组的指针5、 指针也能指向一个函数6、 定义:就是...原创 2018-03-15 09:35:59 · 289 阅读 · 0 评论 -
以数组作为函数的参数c学习笔记
以数组作为函数的参数格式: 类型标识符 函数名(类型标识符 数组名[],int n) { 处理的代码 } A:n表示数组的长度 B:在以数组作为函数参数时,数组一般不写大小 C:它的大小由变量n来决定 sum(int a[],int n) { 处理代码; } 使用: 1)既然型参是数组,那么在调用的时候,实参也应该用数组 2)在调用以数组作为参数的函数时,实参数组只能写...原创 2018-03-08 14:10:16 · 558 阅读 · 0 评论 -
c语言学习之 变量的分类学习笔记
A:按作用域来分类 全局变量 :不在任何一个函数里面定义的变量 局部变量:在函数里面定义的变量 区别:全局变量可以被一个程序中的所有函数都来使用。 局部变量只能在定义它的本函数中来使用。 所有的函数都共享全局变量,在一个函数中改变全局变量的值,会影响得到其他的函数。 如果一个函数中有局部变量,则优先使用局部变量 如果没有局部变量则才会使用全局变量 ...原创 2018-03-08 14:04:31 · 314 阅读 · 0 评论 -
函数的嵌套与递归调用
什么函数的嵌套调用 main()-->fun()-->fun2()-->fun3() //归调用什么函数的求1!+ 2!+ 3!+ 4!+....+n!算法分析: 写一个函数求n的阶乘 要写一个函数从1加到n int fun1(int n){ int i,s=1; for(i=1;i<=n;i++)//求n! { s*=i; } return s;}i...原创 2018-03-07 13:45:15 · 1913 阅读 · 0 评论 -
写一个函数求出一个字符串中所有字母的出现次数,不区分大小写
既然我们要统计出一个字符串所有字符出现的次数,那就要遍历这个字符串的所有字符。这里只写了小写字母的情况,大写字母类似。#include <iostream>using namespace stdint main(){void countChar(char *str,char *a); char str[30];int a[26]={...原创 2017-09-22 10:55:13 · 7417 阅读 · 0 评论 -
三个方法实现求两个数的最大公约数
复制而来,这不是我写的!从键盘输入两个整数,求着两个整数的最大公约数。解题思路:从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数: 辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大转载 2017-09-22 10:51:11 · 586 阅读 · 0 评论 -
c语言之链表学习小结
1 链表Typedef struct linkworker{//此处Typedef 就是给结构体变量名struct linkworker取别名LINK char id[10]; char name[10]; struct linkworker *next; //这个指针是结构体指针,只能指向这样的结构体}LINK; LINK w1={“0001...原创 2017-08-29 14:58:09 · 505 阅读 · 0 评论