语言学习
C/C++语言中的问题
是稀饭呀。
哈喽,你看到我了呀~
展开
-
git仓库进入需要扫身份验证码
今天进入git仓库出现如上图的问题后来通过同事建议,是需要下载谷歌的身份验证器下载完成后扫码即可原创 2021-09-09 17:25:35 · 603 阅读 · 0 评论 -
如何记得住C语言运算优先级
除了经常用之外,我看到了一篇文档,描述的非常清晰,可以秒速记住https://wenku.baidu.com/view/bcac7edfa58da0116c17498c.html 其中提到C语言的45个运算符,按照表中从上到下的顺序优先级依次降低,表中位于同一行的运算符优先级相同。 其实C语言运算运算符可以划分为4类。 第一类是根本不真正运算的运算符,如()、[]、->(取结构体或公用体指针成员)、.(取结构体或共同体成员)。 ...原创 2021-06-23 20:26:41 · 1248 阅读 · 3 评论 -
什么是位和字节,字和半字
1、位和字节 内存单元的大小单位有4个:位(1bit) 字节(8bit) 半字(一般是16bit) 字(一般是32bit) 在所有的计算机、所有的机器中(不管是32位系统还是16位系统还是以后的64位系统),位永远都是1bit,字节永远都是8bit。2、字和半字 历史上曾经出现过16位系统、32位系统、64位系统三种,而且操作系统还有windows、linux、iOS等很多,所以很多的概念在历史上曾经被混乱的定义过。 建议大家对字、半字、双字这些概念不要详...原创 2021-04-19 11:34:33 · 3430 阅读 · 0 评论 -
怎样管理内存?
对于计算机来说,内存容量越大则可能性越大,所以大家都希望自己的电脑内存更大。我们写程序时如何管理内存就成了很大的问题。如果管理不善,可能会造成程序运行消耗过多的内存,这样迟早内存都被你这个程序吃光了,当没有内存可用时程序就会崩溃。所以内存对程序来说是一种资源,所以管理内存对程序来说是一个重要技术和话题。 先从操作系统角度讲:操作系统掌握所有的硬件内存,因为内存很大,所以操作系统把内存分成1个1个的页面(其实就是一块,一般是4KB),然后以页面为单位来管理。页面内用更细小的方...原创 2021-04-19 11:28:28 · 213 阅读 · 0 评论 -
为什么需要内存呢?
内存是用来存储可变数据的,数据在程序中表现为全局变量、局部变量等(在gcc中,其实常量也是存储在内存中的)(大部分单片机中,常量是存储在flash中的,也就是在代码段),对我们写程序来说非常重要,对程序运行更是本质相关。 所以内存对程序来说几乎是本质需求。越简单的程序需要越少的内存,而越庞大越复杂的程序需要更多的内存。内存管理是我们写程序时很重要的话题。我们以前学过的了解过的很多编程的关键其实都是为了内存,譬如说数据结构(数据结构是研究数据如何组织的,数据是放在内存中的)和算法...原创 2021-04-19 11:21:21 · 729 阅读 · 0 评论 -
冯诺依曼结构和哈佛结构
冯诺依曼结构是:数据和代码放在一起。 哈佛结构是:数据和代码分开存在。 什么是代码:函数 什么是数据:全局变量、局部变量 运行应用程序时:这时候所有的应用程序的代码和数据都在DRAM,所以这种结构就是冯诺依曼结构;在单片机中,我们把程序代码烧写到Flash(NorFlash)中,然后程序在Flash中原地运行,程序中所涉及到的数据(全局变量、局部变量)不能放在Flash中,必须放在RAM(SRAM)中。这种就叫哈佛结构。...原创 2021-04-19 11:18:29 · 340 阅读 · 0 评论 -
too few arguments to function“XXX“编译错误
需要检查函数里面的参数够不够,我的报错是因为少个参数原创 2021-03-17 11:02:07 · 7594 阅读 · 0 评论 -
region ‘FLASH‘ overflowed by xxx bytes
在编译的时候曝出如上的错误,表示flash溢出了。那怎么解决呢? 首先,我将新添加的部分注释掉,看是不是因为新添加的代码导致的flash溢出。 其次,逐渐缩小范围,是否是所添加的代码中,个别变量的影响。 最后,实在没有解决办法的时候,就看看和其他的工程有没有什么区别。 我发现,添加之前大小为68608=0x10c00,添加后就超过0x12c00了,一下多了8k多。在没有什么可以删除的时。可以修改flash限制的大小。...原创 2021-01-06 10:57:43 · 4982 阅读 · 1 评论 -
内存管理
原创 2020-09-07 10:20:03 · 85 阅读 · 0 评论 -
[函数指针]
原创 2020-08-28 10:51:55 · 87 阅读 · 0 评论 -
【递归函数指针函数】
返回值:全局变量的地址/static变量的地址/字符串常量的地址/堆的地址。//斐波那契数列//112358 前两项加起来是第三项。#include<stdio.h>int fib(int n);int main (int argc,char *argv[]){ int n=1; while (n <=10) { printf ("%d",fib(n)); n++; } printf("\n"); return 0..原创 2020-08-27 10:46:25 · 263 阅读 · 0 评论 -
【数组在函数中的传参】编写函数,计算一个一维整形数组的所有元素的和
#include<stdio.h>int arry_sum ( int data [ ] , int n) ;int main (int argc,char *argv[]){ int a[]={5,9,10,32,10}; int sum =0 ; sum = arrry_sum(a,sizeof(data)/sizeof(int));printf("sum=%d\n",sum);return 0;}int arry_sum ( int...原创 2020-08-26 11:40:41 · 1648 阅读 · 0 评论 -
【函数参数传递】编写一个函数,统计字符串中小写字母的个数,并把字符串中的小写字母转化成大写字母。
字符串怎么存?先把字符串中的小写字母统计出来,用strfun()这个函数。当功能比较复杂的时候就一步一步来做。然后把数组传过来。数组名就是一个指针。需要一个返回值,来记录小写字母的个数,n=strfun(s).#include<stdio.h>int str_fun(char *p);int main(int argc,char *argv[]){char s[ ] = “welcome2017beijing”n=str_fun(s);printf( ...原创 2020-08-26 10:50:28 · 7187 阅读 · 0 评论 -
main函数的参数
#include<stdio.h>int main ( int argc, const char * argv [ ] ){ int i ; printf ( " argc=%d\n ", argc ) ; for(i=0;i<argc;i++) { printf("%s\n",argv[i]); } return ...原创 2020-08-25 16:06:42 · 97 阅读 · 0 评论 -
const变量
#include<stdio.h>int main ( int argc , char *argv ){ int m =10; const int *p ; int *const q; p=&m; q=&m; return 0 ;}原创 2020-08-25 15:34:21 · 77 阅读 · 0 评论 -
void指针
#include<stdio.h>int main ( int argc , char *argv ){ int m = 10 ; double n =3.14; void *p , *q ; p=(void *) &m ; printf("%d %d\n,m,*(int*)p"); q=(void *) &n ; printf("%d %d\n,...原创 2020-08-25 11:11:42 · 174 阅读 · 0 评论 -
多级指针
int m = 10;int *p;int ** p;p = &m;q =& p;原创 2020-08-25 10:54:25 · 58 阅读 · 0 评论 -
指针和数组/字符串
原创 2020-08-21 18:10:37 · 81 阅读 · 0 评论 -
指针
指针变量的说明:原创 2020-08-13 09:28:49 · 100 阅读 · 0 评论 -
字符串函数
C库中实现了很多字符串处理函数#include <string.h>几个常见的字符串处理函数1.求字符串长度的函数strlen2.字符串拷贝函数strcpy3.字符串链接函数strcat4.字符串比较函数strcmp1)字符串长度的函数strlen 格式:strlen(字符数组) 功能:计算字符串长度 返值:返回字符串实际长度,不包括‘\0’在内 \xhh表示十六进制数代表的符号 \ddd表示0进制的例:对于一下字符...原创 2020-08-12 17:52:59 · 121 阅读 · 0 评论 -
素数
在一个大于1的自然数中,除了1和此整数自身外,没法被其他的自然数整除的数。换句话说,只有两个正因数( 1和自己)的自然数即为素数,比1大但不是素数的数称为合数,1和0即非素数也非合数。题目:对于一个大于或等于3的正整数,判断它是不是一个素数S1:输入整数n的值S2: i=2S3: n被i除,锝余数rS4: 如果r=0,则打印n“不是素数”,算法结束,执行S5S5: i +1 ➡ iS6: 如果 i 小于等于根号n,返回S3 ; 否则打印n“是素数”...原创 2020-08-11 14:29:51 · 284 阅读 · 0 评论 -
打印出所有“水仙花”数,水仙花数是指一个三位数,其各个位数字立方和等于该数本身
//先表示框架//当给你个n的时候,abc到底等于多少。int main (int argc , const char *argv []){ int n =100; int a,b,c ; //分别代表 个位 十位 百位 while(n<=999) { a = n / 100; b = n / 10%10; c = n % 10; if ( a*a*a + b*b*b + c*c*c ==...原创 2020-08-11 10:54:44 · 559 阅读 · 0 评论 -
编写程序用C++写hello world
#include<iostream>int main (){ std::cout << "hello world" << std :: end 1; return 0; }原创 2020-07-24 10:02:23 · 576 阅读 · 0 评论 -
NULL与nullptr
传统意义上来说,c++把NULL、0视为同一种东西,有些编译器将NULL定义为 ((void*)0),有些将其定义为0.c++不允许直接将void*隐式的转化为其他类型,但是如果NULL被定义为 ((void*)0),当编译char *p = NULL;NULL只好被定义为0。还有:void func(int);void func(char*);如果NULL被定义为0,func(NULL)会去调用void func(int),这是不合理的所以引入nullptr,专...原创 2020-06-18 11:21:09 · 440 阅读 · 0 评论 -
C++中的const
1. 在C中const修饰的变量是只读变量,如果修饰局部变量会放到栈上,如果是全局变量会放到只读存储区,只在编译器有用,运行期无用,可以通过指针修改其值,但是在C++里const修饰的是真正的常量,放在符号表里,当遇到时会从符号表里取出替换。但是C++也会为const修饰的量分配空间,但并不使用,在一下两种情况下,C++会给const修饰的量分配空间: 1)extern导出const修饰的量 2)对const修饰的量取地址以上两种情况将导致C++为其分配空间,举例...原创 2020-06-09 13:55:30 · 88 阅读 · 0 评论 -
int f() 和 int f(void)的区别?
在C语言中二者有区别,第一个代表返回值为int,参数为任意个任意类型,第二个代表返回值为int,不接受参数 但在C++里二者代表同一个意思,即返回值int,不接受参数,并且C++更支持第一种写法int f() 和 int f(void)的区别?...原创 2020-06-09 13:51:19 · 621 阅读 · 0 评论 -
C到C++几个不一样的地方记录
1) C中不允许在需要变量的地方随即定义,必须定义在开头,但C++允许2)C语言中register关键字表示请求编译器将变量放到寄存器上,因此不能对register修饰的变量取地址,但是在C++里可以取地址,在旧版本的C++编译器中是这样处理的:当需要对register修饰的变量取地址时,编译器会使register无效,而新版的C++ 编译器中直接忽视register关键字,当成没有3)在C语言中允许全局变量重名,但是C++中不允许全局变量重名4)C++中加强了struct关...原创 2020-06-09 13:48:05 · 120 阅读 · 0 评论 -
C++学习笔记:为什么就需要构造函数和析构函数?
学习朱老师C++课程、第一,把它可以看做对象的初始化式 对象和初始化有啥区别呢?在面向对象编程里面所谓的对象,可以等同对比为非面向对象编程里的变量。在非面向对象里的变量的C语言里面,我们都是定义变量,变量是怎么初始化的?就是在定义变量的时候给它赋值,初始化。不能定义对象,对象的初始化,就是要靠构造函数。第二,构造函数还能为对象完成动态内存申请,同时在析构函数中释放,这样就形成了动态内存的完整使用循环 假设在C语言中,有个结构体,要单独的malloc去分配。在C...原创 2020-05-29 11:01:33 · 2090 阅读 · 0 评论 -
什么是构造函数和析构函数?
1.构造函数1.1概念 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。1.2 C++构造函数 C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而...原创 2020-05-29 10:48:53 · 16570 阅读 · 0 评论 -
定义一个结构体
问题定义: 有时需要将不同类型的数据组合成一个有机的整体,以便于引用。:如一个学生有学号、姓名、性别。年龄。地址等属性,int num; chai name [20] ; char sex ;int age; int char addr[30]num:007name:janesex:mage:24addr:Beijing定义一个结构的一般形式:struct 结构名{成员表列};成员表列由若干个成员组成。每个成员都是该结构的一个组成部分,对每一个成员都.原创 2020-05-11 14:23:03 · 4183 阅读 · 0 评论 -
typedef到底怎么用?
众所周知,typedef关键字可以用于给数据类型定义一个别名。 当你定义了一个结构体时,每次创建一个结构体都要使用 struct+结构体名 的方式,而用了typedef之后,只要一个结构体别名就可以创建了。并且有了别名,本名我都可以不要了(当然你也可以加上)。虽然说简化写法是一个不错的功能,但却不是一个很必要的功能。那么肯定有别的好处才是。 我们知道C语言定义数据类型的时候只定义了它们之间的关系,但却没有具体定义它们的大小。比如 short 的...原创 2020-05-11 14:07:40 · 1502 阅读 · 0 评论 -
C++里的 ::
"::"在C++中表示作用域,和所属关系。"::"是运算符中等级最高的,它分为三种,分别如下:一、作用域符号:作用域符号”::“的前面一般是类来名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。例如:A,B表示两个类,在A,B中都有成员member。那么:1、A::member就表示类A中的成员member。2、B::memb...原创 2020-05-08 17:21:33 · 5609 阅读 · 0 评论 -
重载是什么
C++的函数重载机制。实质就是”用同样的名字在定义一个有着不同参数但有着同样用途的函数。(人格分裂,多重身份)注意:可以是参数个数上的不同,也可以是参数数据类型上的不同。这个例子我们体验到,对函数进行重载,事实上可以简化编程工作和提高代码可读性。事实上重载不是一个真正的面向对象特征,他只是可以简化编程工作的一种方案,而简化工作正式C++的全部追求.有以下几点需要注意:1.对...原创 2020-05-08 15:48:18 · 402 阅读 · 0 评论 -
02 C++区分了声明和定义
当main后面的圆括号中写上void,表示没有给main函数发送任何消息。使用#include指令,可以让编译器在编译过程中将指定的包含文件放入程序中,#include指令被解释为“添加stdio.h”文件的内容一,变量声明和变量定义变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。变量声明:用于向程序表明变量的类型和名字。定义也是...原创 2020-05-08 15:24:25 · 184 阅读 · 0 评论 -
01【C++】语言与面向对象思想
C++是一种语言,仅仅是它的语法,特性,标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。 在市面上有很多书,虽然其中可能会花1-2章来介绍C++的基本特性,但是绝对不会让你入门。 OO就是面对对象,C语言有一个优点,就是它的速度可以很快,写出来的程序可以精炼,简单,小巧,不用为了解决某个问题环绕太平洋一大圈。 但如果将C和...原创 2020-05-08 14:01:20 · 180 阅读 · 0 评论 -
数据类型和字节转换
数据类型分为:(1)基本数据类型:包括:int、long、short、char、folat、double;(2)复杂数据类型:数组、结构体、枚举体。(3)较为特殊的数据类型:指针。 在C语言中,检测某一个数据类型所占据的内存大小,也即:所占据的内存中的字节数,可以使用一个关键字来检测,sizeof,这个关键字,是一个运算符,与加(+)减(-)乘(*)除(/)是一样的,都属于...原创 2020-04-21 16:31:10 · 432 阅读 · 0 评论 -
数组与指针
一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,他们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素,(把某一元素的地址放到一个指针变量中)所谓数组元素的指针就是数组元素的地址。一,指向数组元素的指针定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。eg: int a[10]; //定义a为包含10个...原创 2020-04-21 16:27:27 · 181 阅读 · 1 评论 -
什么是指针?
指针是C语言中的一个重要概念,也是C语言的一个重要特色。正确而灵活的运用它,可以有效地表示复杂的数据结构,能动态分配内存,能方便的使用字符串,有效而方便的使用数组。掌握了指针的应用,可以使程序简洁,紧凑,高效。可以说没有掌握C语言,就是没有掌握指针的精华。 为了能说清什么是指针必须说清楚数据在内存中是如何存储的,又是如何读取的。 内存有两个属性,.内...原创 2020-04-20 17:13:47 · 3170 阅读 · 0 评论