c语言基础知识
文章平均质量分 67
aFakeProgramer
Adaptive AUTOSAR的技术专家,AUTOSAR中国官方培训讲师,具备深厚的汽车行业知识和以太网通信技能。SOME/IP、IPC、DDS、DoIP、UDS、TSN和SOA架构,MQTT,加密,操作系统,v2x,以及c++和Python编程语言。改写成个人简介
展开
-
一篇文章完全讲解C语言指针
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。为什么需要指针?指针解决了一些编程中基本的问题。第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然小伙伴们也可以通过数据的复制达到相同的效果,但是这样往往效率不太好。因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都...转载 2021-04-28 10:55:14 · 269 阅读 · 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 · 159 阅读 · 1 评论 -
分治法,迭代与动态规划及贪心算法感悟
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。1.分治法 分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治模式在每一层递归上都有三个步骤:...转载 2020-03-10 14:01:44 · 814 阅读 · 0 评论 -
什么是回调函数?
为了弄明白这种函数的奥妙,首先提出三个问题:1. 回调函数是什么东西?2. 回调函数怎么开发,怎么使用?3. 回调函数的作用,应该在什么情况下使用? 带着问题来学习,有目的!呵呵,个人经验。打开baidu.com、google.cn搜索了好多资料,如下:顺便提一下,某君的一个签名很让我佩服:1好好活着,因为我们会死很久。2五千年...转载 2018-10-23 10:34:50 · 238 阅读 · 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 · 130 阅读 · 0 评论 -
日期加一天的函数
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 · 4382 阅读 · 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 · 223 阅读 · 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 · 10695 阅读 · 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 · 140 阅读 · 0 评论 -
c语言之文件学习
文件是相关信息的集合文字信息、声音信息、图形信息文件的取名:主文件名.扩展名文件的分类:(c 程序中)A:文本文件B:二进制文件(data)把结构体的信息写入的文件c程序可以对文件进行操作读操作:从文件里面把文件的内容读取出来,并输出到屏幕。它不会改变文件的内容写操作:把一些内容往文件里面写入。它一定会改变文件的内容c程序如何对文件操作的呢?通过文件指针和一些函数对文件进行操作的什么是文件指针?这...翻译 2018-03-28 11:11:39 · 409 阅读 · 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 · 1847 阅读 · 0 评论 -
c语言——指向字符串的指针
字符串是用双引号括起来的0个或多个字符,例如:"123"。原创 2018-03-13 13:43:32 · 10384 阅读 · 3 评论 -
生日快乐音乐小程序
#include "iostream"#include "time.h"#include <windows.h>#include <stdio.h>#include<conio.h> using namespace std;unsigned int rhythm[] = { 0x188, 0x188, 0x1B8, 0x188, 0x20B...转载 2018-03-13 11:22:24 · 10335 阅读 · 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 · 160 阅读 · 0 评论 -
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 · 365 阅读 · 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 · 297 阅读 · 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 · 341 阅读 · 0 评论 -
写一个c程序,从一个字符串中提取出关键字后面的数字
#include <syslib.h>#include <string.h>main(){char *s="GoldenGlobalView";char *l="lob";char *p;clrscr();p=strstr(s,l);if(p)printf("%s",p);elseprintf("Not...原创 2019-08-15 21:29:46 · 1394 阅读 · 0 评论 -
C 可变参数
有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。int func(int, ... ){ . . . } int main() { func(2, 2, 3); func(3, 2, 3, 4);...转载 2019-07-18 15:02:31 · 133 阅读 · 0 评论 -
难得的c语言经典面试题
• 变量的生存期,栈和堆的区别,变量的初始化问题,传指针和传值的实质 传指针的实质是传值,传值的时候,我们是做了一个复制品.在函数中只是对复制品在操作.进入函数和返回函数都是这个道理,经历了一个复制的过程.举个例子(csdn上的一个例子),这个程序的作用是从控制台读取两个数,存到数组中,然后输出.但这两种方式中有一种是错误的.#include <stdio.h>#inc...翻译 2019-06-27 21:59:57 · 719 阅读 · 0 评论 -
电脑编程的基础知识——编译器和连接器
核心提示: 我从没见过(不过应该有)任何一本C++教材有讲过何谓编译器(Compiler)及连接器(Linker)(倒是在很老的C教材中见过),现在都通过一个类似VC这样的编程环境隐藏了大量东西,将这些封装起来。在此,对它们的理解是非常重要的,本系列后面将大量运用到这两个词汇,其决定了能否理解如声明、定义、外部变量、头文件等非常重要的关键。编译器: 把源代码编译成目标文件 ...转载 2019-06-27 12:11:23 · 2331 阅读 · 0 评论 -
将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变
https://blog.csdn.net/roma823/article/details/6388591转载 2019-06-17 09:53:09 · 1000 阅读 · 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 · 641 阅读 · 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 · 127 阅读 · 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 · 785 阅读 · 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 · 424 阅读 · 0 评论 -
c语言常用的几个函数
strcpy函数2)如何给字符串进行赋值: A:字符串不能直接赋值 B:目前而言。给字符串赋值的方法是通过strcpy函数 C:strcpy函数需要string.h的头文件的支持 D:在使用strcpy函数时不能把大串赋值给小串格式:strcpy(字符串1,字符串2) //相当于是字符串1=字符串2;strlen函数:格式: strlen("字符串");...原创 2018-03-06 10:26:49 · 1428 阅读 · 0 评论 -
c语言 一维字符型数组
什么是一维字符型数组:char a[5];//这个数组中含有5各元素,每个元素都是一个字符型变量如何定义一字符型维数组:格式: char 数组名[长度]; ex: char a[6];定义了一个含有6个字符型变量的数组a。如何来给一维字符型数组赋初值?1)一维字符型数组从“整体上看”就是一个字符串,但是其中的每一个元素还是一个字符2)关于字符串的结束符号\0 A:\0虽然有2个字符,但是\...原创 2018-03-06 10:03:42 · 8127 阅读 · 1 评论 -
指向二维数组的指针学习笔记
二维数组与一维数组的关系二维数组的指针指向一维数组的指针一维数组的情况下:数组名代表数组首地址*(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 · 3877 阅读 · 1 评论 -
c语言之指针之谜
变量地址的意义指针的定义指针的赋初值通过指针改变变量的值 内存:(锅) A:在计算机中有一个很大的处理场 B:程序都是在内存中运行的 C:总结:数据的处理场地外存:(电冰箱)数据的存放场地 当我们编写一个c程序,并运行后,它也会放在内存中 什么是指针: 1、c程序要运行,都是在内存中来运行的 2、在c程序中一般会有很多变量,windows就会为程序中的每一个变量分配一个存储单元, ...原创 2018-03-09 15:32:35 · 370 阅读 · 0 评论 -
c语言之宏学习笔记
宏 宏 什么是宏? 1、 用一个字符串表示有意义的常量或常量表达式被称为宏 2、 使用宏可以增加程序的灵活性 3、 宏为了区分变量一般用大写字母,也可以用小写字母 4、 宏不是语句,所以在定义宏的时候不要加分号,若加了则会连同分号一起替换 5、 宏可以嵌套定义 6、 宏一般写在文件的开头,如果有头文件,则放在头文件的下面 7、 在字符串里面即使有宏名也不做替换 8、 宏的运...原创 2018-03-15 10:26:49 · 249 阅读 · 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 · 253 阅读 · 0 评论 -
以数组作为函数的参数c学习笔记
以数组作为函数的参数格式: 类型标识符 函数名(类型标识符 数组名[],int n) { 处理的代码 } A:n表示数组的长度 B:在以数组作为函数参数时,数组一般不写大小 C:它的大小由变量n来决定 sum(int a[],int n) { 处理代码; } 使用: 1)既然型参是数组,那么在调用的时候,实参也应该用数组 2)在调用以数组作为参数的函数时,实参数组只能写...原创 2018-03-08 14:10:16 · 507 阅读 · 0 评论 -
c语言学习之 变量的分类学习笔记
A:按作用域来分类 全局变量 :不在任何一个函数里面定义的变量 局部变量:在函数里面定义的变量 区别:全局变量可以被一个程序中的所有函数都来使用。 局部变量只能在定义它的本函数中来使用。 所有的函数都共享全局变量,在一个函数中改变全局变量的值,会影响得到其他的函数。 如果一个函数中有局部变量,则优先使用局部变量 如果没有局部变量则才会使用全局变量 ...原创 2018-03-08 14:04:31 · 274 阅读 · 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 · 1861 阅读 · 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 · 7233 阅读 · 0 评论 -
三个方法实现求两个数的最大公约数
复制而来,这不是我写的!从键盘输入两个整数,求着两个整数的最大公约数。解题思路:从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数: 辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大转载 2017-09-22 10:51:11 · 548 阅读 · 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 · 456 阅读 · 0 评论 -
在字符串中插入另一个字符串方法二
算法分析:把第一个字符串的前一部分和后一部分分别保存在两个字符串result和tmp中然后再做一个拼接reslut=reslut+str2+tmp#include<stdio.h>#include<string.h>#define N 20int main(){ char str1[N],str2[N],result[2*N],tmp[N]; in...原创 2017-08-28 13:33:36 · 1055 阅读 · 2 评论 -
指向一维数组的指针学习笔记
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 · 1331 阅读 · 0 评论