
【c语言】
文章平均质量分 53
QX_a11
认真生活
展开
-
extra text after expected end of preprocessing directive
原代码:#ifdef defined(ENABLE)**********#elifdefined(ENABLE)**********#endif会有警告Warning: #14-D: extra text after expected end of preprocessing directive发生,意思是预期预处理指令是在#ifdef后就要结束的,属于预处理用法产生的问题改为:#ifdefined(ENABLE)**********#elifdef...原创 2021-09-08 19:39:43 · 7997 阅读 · 0 评论 -
C和C++的区别(1)——函数重载
C和C++的区别在C++中,函数重载就是在同一作用域下,函数名相同,而参数列表不同的一组函数;而在C语言中不支持函数重载;这是因为C++编译后在库中的名字与C语言的不同;假设某个函数的原型为void fun(int x,int y)。该函数被C编译器编译后的库中的名字为_fun;而被C++编译器则会产生像_fun_int_int这样的名字。函数重载(1)函数重载指的是同一作用...原创 2019-04-25 00:04:33 · 363 阅读 · 0 评论 -
预编译、编译、汇编、链接过程
预编译将源代码或者头文件经过预编译成一个.i文件。例如C++文件扩展名是.cpp,头文件的扩展名可能是.hpp,预编译后的文件扩展名是.i预编译的过程相当于下面的命令:对c语言文件的处理:gcc –E 源文件 –o目标文件对c++语言的文件的处理:g++ gcc –E 源文件 –o目标文件例如:gcc –E hello.c –o hello.i预编译需要做的工作:主要处...原创 2019-05-04 14:34:10 · 592 阅读 · 0 评论 -
不使用其他判断语句和第三方变量,实现两个数的交换和比较
一提到两个变量的交换与比较,一般首先都会想到使用if、? :、switch等判断语句;但在面试的时候,经常会问到不使用判断语句的情况下,如何实现两个变量的交换和比较?变量a、b找出其中比较大的一个:方法一:int max = ((a + b) + abs(a - b)) / 2方法二:int max(int a,int b){ int c = a - b;/...原创 2019-04-24 11:51:55 · 253 阅读 · 0 评论 -
C与C++的区别(3)——指针与引用
我们在学习c语言的时候,知道函数传参有两种,值传递和地址传递;而在C++中,多了一个引用的概念,引用就是给已存在的变量取了一个别名,编译器不会给引用开辟新的空间,与其引用的变量共用一块空间。引用于指针的区别引用:引用就是对某一变量的一个别名,对引用的操作对变量直接操作完全一致;int a = 10;int *p = a;&在此不是求地址运算,而是起到标识作用。 ...原创 2019-04-28 17:43:01 · 322 阅读 · 0 评论 -
C与C++的区别(2)——new和malloc的区别
一、本质区别在C++中引入更多的关键字,比如:new和delete;而malloc和free是库函数,需要头文件的支持;二、申请的空间所在的位置new关键字为对象分配的空间在自由存储区内。而molloc是从堆上分配内存;C/C++内存通常分为:堆、栈、自由存储区、全局/静态存储区、常量存储区;自由存储区:是C++中通过new和delete动态分配和释放对象的抽象概念;...原创 2019-04-26 21:14:59 · 411 阅读 · 0 评论 -
从面向过程到面向对象
面向过程编程面向过程编程的核心:功能分解(自顶向下,逐步求精)。就是将一个大问题分解成多个小问题,多个小问题再进行分解;解决小问题就会容易很多面向过程最重要的原则:高内聚、低耦合内聚是指模块内部各成员之间关联的紧密程度耦合是指模块与模块之间关联的紧密程度面向过程的特点: 1)分析解决问题所需要的步骤 2)利用函数实现各个步骤,解决个问题面向过程编程的主要缺点就是 ...原创 2019-04-16 10:51:37 · 285 阅读 · 0 评论 -
C程序设计语言——缓冲、常见的问题
我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容易事情。《6个变态的hello world》和《如何弄乱C的源代码》则以一种极端的方式告诉大家,不要以为咱们自己写不出混乱的代码,每个程序员其实都有把代码搞得一团乱的潜质。通过这些文章,相信你对编程...转载 2019-03-22 21:27:26 · 339 阅读 · 0 评论 -
【c语言】函数调用栈
我们常常会使用函数调用来实现某种操作,只知道从调用函数跳到被调函数,被调函数执行完又返回到主调函数,可能会有以下的疑问: ...原创 2018-11-12 17:53:28 · 555 阅读 · 0 评论 -
【c语言】斐波那契数列
斐波那契数列1.使用循环实现#include <stdio.h>int Fabio(int n){int f1 = 1;int f2 = 1;int f3;if(n==1||n==2)return 1;else{for(int i=3;i<=n;i++){f3=f1+f2;f1=f2;f2=f3;}}return f3;}int...原创 2018-04-26 14:36:18 · 270 阅读 · 0 评论 -
【c语言】字符串奔溃的原因
字符串奔溃的原因一、字符串奔溃的两种情况1.试图修改字符串常量的值2.越界二、解释1. gets:gets函数是读取一行的字符串,所以此函数容易发生越界的情况,使用时编译器会发出警告; 必须使用时建议用fgets;2.举例#include <stdio.h>#include <string.h>int ...原创 2018-04-26 14:08:44 · 441 阅读 · 0 评论 -
【c语言】sizeof与strlen的区别
字符串字节数与有效长度一、说明1.字节数:定义字符数组时,字节数为初始化的字符长度;未定义字符长度时,计算字节数时,要包括字符串末尾的‘\0’;2.有效长度:'\0'是字符串有效长度的终止标志,所以有效长度中不包括‘\0’;二、代码解释#include <stdio.h>#include <string.h>int main(){char ...原创 2018-04-26 13:45:14 · 852 阅读 · 0 评论 -
【c语言】const用法
const一、说明const:定义常变量,不能写,只读。1.数据类型对于const而言是透明的;2.const用于封锁直接修饰的内容,将该内容变为只读;3.权限只能同等或者缩小传递;二、实例说明int main(){ int a=10;//读写 int b=20;//读写 const int ca=10;//ca只读...原创 2018-04-10 01:06:47 · 247 阅读 · 0 评论 -
【c语言】指针
对于指针:1.指针相当于取地址,指针==地址;2.获取任何变量的地址都是:&变量名;3.*指针变量名,则间接访问(解引用)到指针指向的变量;以下面的代码为例,进行详细解释int main{ int a=10; int b=20; int *p=&a;//这里的*p,是个定义,说明p是个指针变量;先定义后使用时:...原创 2018-04-08 19:33:36 · 281 阅读 · 0 评论 -
【c语言】两个值的交换
指针的调用—交换两个数值一、子函数(被调用函数)的改变要想修改父函数(调用函数)的值需要:1.传指针2.解引用二、代码的实现过程错误一:void swap(int a,int b){ int tmp; tmp=a; a=b; b=tmp;}int main(){ int a=10; ...原创 2018-04-08 20:55:43 · 597 阅读 · 0 评论 -
【c语言】函数的默认参数
在c语言中是没有函数默认值的概念,可以利用宏来模拟参数默认值;在c++中可以为参数指定默认值;所谓函数默认值就是当调用点没有相对应的形参时,就自动使用默认参数,编译器会自动把默认值传递给调用语句中;设置函数默认值需要注意有以下几点1.函数默认值一般写在声明中2.函数的默认值必须设置为自右向左依次赋值3.默认值只能赋一次4.函数的默认值不能设置为局部变量第一点:先写一段简...原创 2018-11-30 20:19:37 · 16538 阅读 · 10 评论 -
【c语言】折半查找
折半查找1.基本思路在数组中给出一组有序数(前提是一组有序数),查找一个数是否在此数组中;不断取数组的中间值,将这个中间值与要查找的数字比大小,如果,这个要查找的数比中间值大的话,在后半部分查找,否则在前半部分查找;直到有中间值与要查找的值一致时,返回数组下标,循环结束;2.代码#include <stdio.h>int BinSearch(int *ar...原创 2018-04-08 20:09:00 · 416 阅读 · 0 评论 -
【c语言】对于十进制n的计算
给出一个十进制n,要求:1.求出它是几位数 GetFigures(n)此题利用循环的知识,每循环一次除去位数,并保存这个新值,直到此值为零,循环结束;保存循环的次数,既十进制n的位数。这里使用while-do的循环,考虑到n为零时,位数应该为1,所以应该进行一次循环,而while-do符合这个条件;使用while-do时应该注意在while后加封号。2.分别输出每一位数字 ...原创 2018-03-30 22:55:50 · 869 阅读 · 0 评论 -
【c语言】关于进制转换的面试题
一、30!转换成三进制有几个0我们先从简单十进制说起例如:十进制30!中有几个0;5和一个偶数得一个零10得一个零15和一个偶数相乘得一个零20得一个零25=5*5与两个偶数相乘得到两个零30得到一个零所以十进制30!中共有7个零;总结上例,十进制中相乘结果为10时,则会得到一个零;同样在三进制也是一样的,相乘结果为3时会得到一个零,即:30!转换...原创 2018-09-25 11:21:16 · 453 阅读 · 0 评论