C++学习笔记(一)

合集下载

碳族元素学习笔记无机化学

碳族元素学习笔记无机化学

碳族元素预习笔记一、碳族元素通性1、原子结构性质⑴相似性:•外层电子构型:ns²np²气态氢化物的通式:RH4最高价氧化物对应的水化物通式为H2RO3或R(OH)4⑵递变性•+2价化合物主要氧化态稳定性:由上至下逐渐增强+4价化合物主要氧化态稳定性:由上至下逐渐减弱但铅(Ⅱ)化合物稳定性高于铅(Ⅳ),铅(Ⅳ)本身为强氧化剂。

•熔沸点降低(锡和铅反常),单质密度逐渐增大•金属性增强,非金属性减弱,(由于半径不断增大,原子核对外层电子引力变小所致)•最高价氧化物对应水化物的酸性减弱(最高价氧化物对应的酸举个例子解释:碳酸H2CO3。

(HO)2-CO连接一个氧原子,氧原子强吸电子作用导致碳原子电子云密度下降,对应的碳原子同样要从羟基上边多取电子,那么最终结果就是羟基氧原子再把和氢原子公用的电子对拉向自己。

那么此时氢原子是缺电子的,就会很容易电离。

氢原子越缺电子越容易电离;那么对应的中心原子越吸电子,氢原子就越缺电子。

所以从上到下,元素原子电负性减弱,吸电子能力减弱,自然氢离子电离能力减弱,酸性减弱。

)•氢化物的稳定性减弱•第一电离能:由碳至铅逐渐减小(同主族由上至下半径增大,更易失去最外层电子)特殊:锡<铅•熔沸点:由碳至铅逐渐减小(碳、硅为原子晶体,锗、锡、铅为金属晶体)二、元素的成键特性⒈碳:①共价键(sp:CO sp²:乙烯 sp³:甲烷):碳碳,碳氢,碳氧键键能大,稳定,因此碳氢氧可形成多种有机化合物。

②以碳酸盐的形式存在于自然界中2.硅:①硅氧四面体形式存在(石英,硅酸盐矿)②硅硅,硅氧,硅氢键较弱,可形成有机化合物但数量较少3.锡铅:①离子键(+2氧化态,SnO、PbO +4氧化态,SnCl4)②共价键(+4氧化态,SnO、PbO2)二、碳及其化合物1.单质(三种同素异形体)①金刚石:结构:sp³杂化,原子晶体,五个碳原子构成正四面体性质:硬度最大,熔沸点很高(由于其为空间网状结构),无色透明,不导电,化学惰性,但800°C以上与空气反应成CO2②石墨:结构:sp²杂化,层状原子晶体,每层上的碳原子各提供一个含成单电子的p轨道形成大π键层与层之间靠分子见作用力结合在一起。

【原创】C语言高级用法-学习笔记

【原创】C语言高级用法-学习笔记
1.#的作用
#是将其后的变量直接转换为字符串 void WriteLog(arg) {
printf("%s=%d",#arg,arg) }
2.##的作用
##的作用是连接两个变量
如 #define combine_converse_str(x,y)
x##y
int Err; int Num; printf("%s",combine_converse_str(Err,Num)); 结果为: ErrNum
int aaa(char
x[0]),因为定义一个数组也不能用 char x[0]来定义,编译器在检查参数的声明合法后, 如果发现参数是数组, 就会强制转换成指针, 所以 int aaa(char x[1]) 和 int aaa(char x[100])
的结果是一样的。
B. 数组名用在 sizeof上:结果返回的是整个数组所占空间的大小,而不是一个指针的长度
以及
int * const pi;
1)前两种情况一样的,没有区别。 1) 如果 const 修饰在 *pi 前(前 2 种情况 )则不能改的是 *pi(即不能 类似这样: *pi=50 ;赋值) 而不是指 pi.
这样:pi=&i ;赋值)。 2) 如果 const 是直接写在 pi 前(后一种情况) 则 pi 不能改(即不能类似
2.地址传递 void Exchg2(int *px, int *py) {
int tmp = *px; *px = *py;
*py = tmp; printf("*px = %d, *py = %d.\n", *px, *py); } main() { int a = 4; int b = 6; Exchg2(&a, &b); printf("a = %d, b = %d.\n", a, b); return(0); }

CPrimer中文版(第4版)知识学习记录文本

CPrimer中文版(第4版)知识学习记录文本

C++Primer中文版(第4版)学习笔记调用GNU 或微软编译器调用GNU 编译器的默认命令是g++:$ g++ -o prog1微软编译器采用命令cl 来调用:C:\directory> cl -GX prog1.cppacm pc2编译器搭配下面是pc2配置:(以vc为编译环境)配置环境变量:jdk设置:path=C:\Program Files\Java\jdk1.6.0\bin;vc编译器设置:path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib;include=C:\Program Files\Microsoft Visual Studio\VC98\include环境变量配置完成之后,设置下pc2就ok了!pc2设置如下:compile com line: cl.exe {:mainfile}Executable Filename:{:basename}.exeprogram execution command line:{:basename}.exe做到这些配置,基本上编译就不成问题了!注意,期间可以需要到C:\Program Files\Microsoft Visual Studio\COMMON\Tools路径下拷贝mspdb60.dll到C:\Program Files\Microsoft Visual Studio\VC98\Bin;!这个自己调试就Ok了!访问main 函数的返回值的方式和系统有关。

不论UNIX 还是Windows 系统,执行程序后,必须发出一个适当的echo 命令。

UNIX 系统中,通过键入如下命令获取状态:$ echo $?要在Windows 系统下查看状态,键入C:\directory> echo %ERRORLEVEL%再谈编译编译器的部分工作是寻找程序代码中的错误。

(完整)C语言 谭浩强学习笔记

(完整)C语言 谭浩强学习笔记

C语言谭浩强版笔记第一章程序设计和C语言1、计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该计算机的机器语言。

2、语言的发展历史:①机器语言②符号语言③高级语言3、高级语言的发展:①非结构化语言②结构化语言③面向对象的语言4、C语言的祖先是BCPL语言5、在字符串中的//和/*都不作为注释的开始。

而是作为字符串的一部分。

【但是在vc++6.0中//显示编译错误】6、不要以为在max函数中求出最大值z后就会自动地作为函数值返回调用处,必须用return语句指定将哪个值作为函数值。

也不要不加分析地在所有函数后面都写上return 07、一个程序由一个或多个源程序文件组成8、全局声明:即在函数之外进行的数据声明,在函数外面声明的变量称为全局变量。

例如把int a,b,sum;放到main函数的前面9、函数是C程序的主要组成部分,编写C程序的工作主要就是编写一个个函数10、一个C语言程序是由一个或多个函数组成的,其中必须有且只有一个main函数11、一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中一个为main函数),若程序规模太大,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数【一个源程序文件就是一个程序模块,一个程序分成若干个程序模块】12、在进行编译时是以源程序文件为对象进行的【分别对各源程序文件进行编译得到相应的目标程序,然后再将这些目标程序连接成为一个统一的二进制可执行程序】13、C语言的这种特点使得容易实现程序的模块化14、一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。

如果函数没有参数,可以写void或空括号【如int main(void)或int main()】15、void dump(){}它是一个空函数,但是是合法的16、程序总是从mian函数开始执行的,不管位置在哪儿17、程序中对计算机的操作是由函数中的C语句完成的18、二进制目标程序在visual C++中的后缀为.obj19、可执行程序在visual C++中的后缀为.exe20、一个源程序经过编译后得到的目标程序要经过连接阶段与函数库进行连接才能生成可执行文件21、程序设计的任务:①问题分析②设计算法③编写程序④对源程序进行编辑、编译和连接⑤运行程序,分析结果⑥编写程序文档第二章算法1、对数据的描述:在程序中要指定用到哪些数据类型以及这些数据类型和数据的组织形式,这就是数据结构。

c 语言学习笔记01

c 语言学习笔记01

1. c 语言1.1.1.helloworld文件名:test_pointer.c文件内容:#include <stdio.h>#include <malloc.h>int main(){printf("hello world\n\n");return 0;}编译加运行:[root@localhost c_study]# gcc test_pointer.c ;./a.outhello world1.1.2.获取键盘输入文件名:getKeyboardInptStr.c文件内容:#include <stdio.h>#include <malloc.h> int main(){char *a= malloc(sizeof(char *));char *b= malloc(sizeof(char *));scanf("%s",a);scanf("%s",b);printf("%s \t%s\n",a,b);free(a);free(b);return 0;}编译:gcc getKeyboardInptStr.c -o hello.exe运行[root@localhost tcp_ip]# ./hello.exe abcdddabc ddd[root@localhost tcp_ip]#1.1.2.1.从键盘输入构造数组文件名keyboard_input.c文件内容:#include <stdio.h>#include <malloc.h>int main(){char * strs[4];char *a;int i;for(i=0;i<4;i++){a= malloc(sizeof(char *));scanf("%s",a);strs[i]=a;//printf("%s \t\n",a);//free(a);}printf("=====================================\n");for(i=0;i<4;i++){printf("%s \t\n",strs[i]);}return 0;}1.1.3.读取文件读取文件有两个操作:打开流(fopen)和关闭流(fclose)#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(int ac,char**av){int exit_status=EXIT_SUCCESS;FILE *input;while( *++av!=NULL){input=fopen(*av,"r");if(input==NULL){perror(*av);exit_status=EXIT_FAILURE;continue;}if(fclose(input)!=0){perror("fclose");exit(EXIT_FAILURE);}}return exit_status;}1.1.3.1.打开文件流1.1.3.1.1.ungetc 用法文件名:ungetc_test.c文件内容:#include<stdio.h>#include<ctype.h>int main(){int value;int ch;value=0;while((ch=getchar())!=EOF && isdigit(ch)){value=value*10;value+=ch-'0';}//ungetc(ch,stdin);printf("%d\n",value);ch=getchar();printf("last char is %c\n",ch);return value;}若注释掉红色部分:[root@localhost read_file]# gcc ungetc_test.c;echo 234abc|./a.out 234last char is b否则:[root@localhost read_file]# gcc ungetc_test.c;echo 234abc|./a.out 234last char is a1.1.3.2.关闭流1.1.3.3.读取文本文件文件名称:read_file03.c文件内容:#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(){int value;int ch;char *input_file="ab.txt";FILE *input;input=fopen(input_file,"r");while((ch=fgetc(input))!=EOF){printf("%c",ch);}return 0;}1.2.指针1.2.1.取地址和取值取地址:&取值:*1.2.1.1.取地址int age=23;int *age_adrr=&age;1.2.1.2.取值参阅取地址。

C语言学习笔记,悉心整理

C语言学习笔记,悉心整理
else if (表达式)
语句 else if (表达式) 语句 else if (表达式) 语句 else 语句 这种 if 语句序列是编写多路判定最常用的方法。其中的各表 达式将被依次求值,一旦某个表达式结 果为真,则执行与之相关的语句,并终止整个语句序 列的执行。同样,其中各语句既可以是单条语 句,也可以是用花括号括住的复合语句。
数据输出
输出字符: putchar()输出一个字符 例如:putchar(‘a’); putchar(‘\n’) 包含在头文件 stdio.h 中
格式化输出及输出格式控制符
printf()函数:(特例,不需包含 stdio.h 头文件) printf(“格式控制字符串”,输出表列); 其中格式控制字符串是用双引号引起来的字符串,用于指定输出格式,包括格 式说明和普通字符两种信息构成。格式说明是以%开头后跟一个格式字符组成 普通字符按原样输出。 输出表列是需要输出的变量或者表达式。 注意: 格式符 %d %o %u %x %c 用于处理整形和字符型数据 %s 用于处理字符串 %f %e %g 用于处理实型数据 允许没有输出表列,即只输出普通字符,但是格式符一定要正确 要输出%要使用%% %与格式符之间可以指定输出项的宽度和小数点后数据的位数,格式为: %m[.n]格式字符。其中域宽为 0 开头的数时,则输出前导 0.
从右至左
* / % 从左至右 + • 从左至右 << >> 从左至右 < <= > >= 从左至右 == != 从左至右 & 从左至右 ^ 从左至右 | 从左至右 && 从左至右 || 从左至右 ?: 从左至右 = += •= *= /= %= &= ^= |= <<= >>= 从右至左 , 从右至左 一元运算符+、 、&与*匕相应的二元运算符+、 、&与*的优先级高。

【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

【C语⾔C++编程学习笔记】基础语法,第⼀个简单的实例编程⼊门教程!C语⾔/C++编程学习:⼀个简单的实例如果你能知道该程序将会在显⽰器上显⽰⼀些内容,那说明你还是知道⼀些的!确实如此,但所要显⽰的确切内容不是显⽽易见的,所以请运⾏程序来观看结果。

⾸先,⽤你熟悉的编辑器建⽴⼀个上⾯这个样的程序,然后给这个程序取⼀个名字,并以 .c 作为结尾以满⾜所在系统对⽂件名格式的要求。

例如,你可以把它命名为 helloworld.c。

现在编译并运⾏该程序。

如果⼀切运⾏正常,其显⽰结果为:实例简单说明◆ #include ←包含另⼀个⽂件这是程序的第⼀⾏。

它的作⽤相当于你在⽂件中的这⾏所在的位置键⼊了⽂件 stdio.h 的完整内容。

实际上,它是⼀种剪切和粘贴操作,这样可以⽅便地在多个程序间共享公⽤的信息。

#include 语句是 C预处理指令的⼀个例⼦。

通常,C 编译器在编译前要对源代码做⼀些准备⼯作;这称为预处理。

stdio.h ⽂件作为所有 C编译包的⼀部分提供,它包含了有关输出输⼊函数的信息以供编译器使⽤。

这个名字代表标准输⼊输出头⽂件。

我们称之为头⽂件,C语⾔中通常都带有许多头⽂件。

◆ int main () ←函数名接下来的这⾏代码声明了⼀个 main函数。

⼀个 C语⾔程序总是从称为 main()的函数开始执⾏的。

你可以对你所⽤的其他函数任意命名,但是 main()必须是开始的函数,所以说,main()函数在程序中是唯⼀的。

那么圆括号的功能呢?它们表明 main()是⼀个函数。

以后你将了解到更多的函数。

但现在,请你记住这个函数是 C程序的基本模块。

int 指明了 main()函数的返回类型。

这意味着 main()函数返回值的类型是整数。

返回到哪⾥呢?返回给操作系统。

如果浏览⽼版本的 C代码,你将发现程序常常以:main()这种形式开始。

C90标准勉强允许这种形式,但是 C99标准不允许。

因此即使你当前的编译器允许,也不要这么做,请注意规范。

翁凯c语言笔记

翁凯c语言笔记

翁凯c语言笔记
翁凯是一位热爱编程的学生,他在学习C语言的过程中积累了很多宝贵的经验和知识。

下面是他的一些C语言学习笔记,希望对大家有所帮助。

1. 基础语法:C语言是一种结构化的编程语言,具有丰富的数据类型和运算符。

翁凯通过学习基础语法,掌握了变量的声明和赋值、控制语句、循环语句等基本概念。

2. 函数与模块化编程:C语言通过函数的调用来实现模块化编程,提高了代码的可读性和可维护性。

翁凯学会了如何定义和调用函数,并且学习了递归函数的使用。

3. 数组与指针:在C语言中,数组和指针是非常重要的概念。

翁凯弄清楚了数组和指针之间的关系,并学会了如何使用它们进行内存管理和数据操作。

4. 结构体与文件操作:C语言中的结构体可以用来存储不同类型的数据,翁凯学会了如何定义和使用结构体,并且掌握了文件的读写操作,可以将结构体数据保存到文件中。

5. 动态内存分配:C语言提供了动态内存分配的功能,翁凯学会了
使用malloc()和free()函数来进行内存管理,避免了内存泄漏和内存溢出的问题。

6. 编程技巧与调试:除了学习语法和基本概念,翁凯还注重培养编程技巧和调试能力。

他学会了使用调试工具和技巧,解决程序中的bug,并且善于利用注释、缩进和命名规范来提高代码的可读性。

翁凯通过不断学习和实践,逐渐掌握了C语言的基本知识和技巧。

他深知编程需要不断练习和积累,因此他坚持每天都进行编程练习,并且参与了一些开源项目,与其他开发者交流经验。

翁凯相信,只有不断学习和实践,才能成为一名优秀的C语言程序员。

C学习笔记一C语言和汇编语言的区别

C学习笔记一C语言和汇编语言的区别

C学习笔记一C语言和汇编语言的区别C语言和汇编语言是计算机编程中常见的两种语言,它们在编写程序时有着不同的特点和用途。

本文将从语法、可读性、抽象程度以及机器依赖性等方面对C语言和汇编语言进行比较,以帮助读者更好地理解它们之间的区别。

1. 语法差异C语言是一种高级编程语言,它采用类似英语的结构化语法,具有丰富的语法特性,包括变量、数组、条件语句、循环语句和函数等。

C语言的语法相对简洁,能够快速实现一些功能。

而汇编语言是一种低级编程语言,使用各种助记符和符号来表示机器指令、寄存器和内存访问等,需要编写者有较强的硬件知识和技巧。

相比C语言,汇编语言更接近计算机底层,更加底层、精简和直接。

2. 可读性和可维护性C语言的语法结构和语义更加接近自然语言,代码具有较好的可读性和可维护性。

由于C语言的抽象程度较高,程序员可以更快速地理解代码,并进行修改和维护。

同时,C语言具有模块化的特点,程序可以按模块进行组织,便于团队协作开发。

相比之下,汇编语言的语法和符号较为晦涩,阅读和理解汇编代码需要具备较深的计算机体系结构和指令集的知识。

汇编语言编写的程序通常较为底层,代码行数相对较多,可读性和可维护性较差,需要更高的技术水平和耐心。

3. 抽象程度C语言是一种高级语言,提供了丰富的语法特性和抽象层次,为程序员提供了更方便和高效的编程方式。

C语言可以在不同的计算机平台上进行移植,并且可以通过调用库函数实现复杂的操作,具备良好的抽象能力。

汇编语言是一种低级语言,提供了直接操作硬件的能力。

汇编程序员可以直接访问寄存器、内存等底层资源,实现对计算机的精细控制。

汇编语言相对于C语言来说更接近机器语言,具有更高的执行效率和更大的灵活性。

4. 机器依赖性C语言是一种面向过程的编程语言,编写的程序相对独立于具体的硬件平台,具有较好的可移植性。

通过编译器的编译,C语言可以在不同的操作系统和计算机上运行。

汇编语言则直接操作底层的机器指令和寄存器,与具体的硬件平台密切相关,不同的计算机架构和操作系统可能需要不同的汇编代码。

C语言基础学习笔记

C语言基础学习笔记

C语言基础学习笔记(第一版修改)丁炳亮1数据类型和表达式1.1计算机内数据存储方式理解与测试:什么是补码?我们得先知道模的概念。

模“模”是指一个计量系统的计数范围。

如时钟等。

计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。

例如:时钟的计量范围是0~11,模=12。

表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。

“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。

任何有模的计量器,均可化减法为加法运算。

例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。

对“模”而言,8和4互为补数。

实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。

共同的特点是两者相加等于模。

二进制中整数的补码求法是:正数的补码为原码,负数的补码是符号位不变其他位全部取反再整个数加1。

我们可以通过下面的代码看下负整数在计算机内部的表示。

void f(int n){unsigned int i;for(i=1,i<<=15;i;i>>=1){if(i&n)printf("1");elseprintf("0");}printf("\n");}main(){int a=-0xff;f(a);getch();}输出的结果是1111111100000001。

1.2变量与常量理解与测试:1)类型声明在计算机内部数据是以字节为单位存储的,但是我们需要的数据类型有很多种,每种数据类型所占字节和存储方式都不一样。

类型声明的作用就是告诉计算机以哪种“格式”去读写该数据数据。

类型说明符变量名1,变量名2......,变量名n;类型说明符有基本类型(字符型、整数型、单/双精度型)、高级类型(结构体型、共用体型、枚举类型)、指针型等,其中指针类型包括指向基本类型的指针类型、指向高级类型的指针型和指向函数的指针类型(指向函数指针声明格式在后面章节)。

C语言学习笔记(1)

C语言学习笔记(1)

VC++6.0学习笔记进入方法:1、建立一个工程文件——新建——(选择)工程——(选择)Win32 Console Application——位置(选择存贮的位置)——工程名称(要用字母、英文、或拼音都可以)——一路确定到完成2、建立一个文件文件——新建——(选择)文件——(选择)C++Source File——文件名(要用字母、英文、或拼音都可以)——确定一、一个简单的程序:#include <stdio.h>main(){printf("Hello everyone!!\n"); (\n表示换行)}注意:每写完一个程序必需先编译(快捷键是:ctrl+F7)然后再输出(快捷键是ctrl+F5)程序:连续执行的一条条指令的集合称为“程序”对于计算机来说,它不能识别由高级语言编写的程序,它只能接受和处理由0和1的代码构成的二进制指令或数据,由于这种形式的指令是面向机器的,因此也被称为“机器语言”所以所有的高级语言编写的程序都要经过编译,编译成二进制代码,这种具有翻译功能的软件称为编译程序。

1.1.2程序设计1、确定数据结构:就是数也数这间的关系列。

2、确定算法:3、编码:4、在计算机上调试程序:5、整理并写出文档资料:1.2算法定义:是指为了解决某个特定的问题而采取的确定且有限的步骤。

1、有穷性2、确定性3、可行性4、有零个或多个输入5、有一个或多个输出1.3结构化程序设计模快化结构结构化程序由三种基本的结构组成1、顺序结构2、选择结构3、循环结构(分为单性循环、直道循环)练习题:1、计算机能直接执行的程序是()A)源程序B)目标程序C)汇编程序D)可执行程序源程序:由高级语言编写的代码叫做源程序。

2、以下叙实中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用的数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整一个简单的程序#include <stdio.h>main(){double a,b,area;a=1.2,b=3.6; /*将矩形的两条边长分别赋给a和b变量*/area=a*b;printf("a=%f,b=%f,auea=%f\n",a,b,area);/*输出矩形的两条边长和面积*/}主意:C语言中一定要区分大小写字母。

c语言学习笔记

c语言学习笔记

c语言学习笔记第一章基础一、函数是c语言的基本单位,一个程序有一个或多个函数组成,且必须包含main函数(有且只有一个)二、程序总是从main函数开始执行三、c语言的3种基本结构是顺序结构、选择结构、循环结构四、//表示单行注释五、/* */表示块注释第二章常量定义:其值不能被改变的量叫常量一、整形常量例如:100,十进制数100-16,十进制数-1607,八进制数7-036,八进制数-36,等价于十进制数-300x19,十六进制数19,等价于十进制数25-0x2f,十六进制数-2f,等价于十进制数-47二、实型常量例如:3.5,double型常量2e3,double型常量-2e-1,double型常量6. double型常量,等于6.0.3 double型常量,等于0.62.5f float型常量三、字符常量1、普通字符:用‘’单撇号括起来的一个字符,如‘a’,‘9’2、转义字符:以\开头的字符,如\n,换行\t,tab键\\,单斜杠\\61,61是八进制数,等于十进制数49,即字符‘1’\x62,62是十六进制数,等于十进制98,既字符‘b’四、字符串常量用“”双撇号括起来的若干字符例如:“abc”,“”,“a”五、符号常量用#define指令指定的常量例如:#define PI 3.1415827第三章变量一、必须先定义(声明),后使用二、必须是一个合法的标识符三、一个合法的标识符必须满足以下3个条件1、只由字母、数字、_(下划线)三种字符组成2、首字符不能是数字3、不能与c语言的保留字冲突,如void,int等都是保留字四、数据类型1、字符型:char 如‘a’,‘\101’,‘\x41’,‘\n’2、整型:short(短整型)如:2,3,-5int(整型)如:3,89,-7long(长整型)如3l,0L前面可以加修饰符signed(有符号的)或unsigned(五符号的)例如:signed int,有符号整形unsigned int,无符号整形3、实型:float:如3.4fdouble:如4.2,1e2五、不同类型间数据的混合运算1、+,-,*,\运算中,只要有一个为float或double,结果为double型2、int与float或double运算,int、float都转换为double3、char与int运算,char转换为int4、char与float或double运算,char转换为double六、常用ASCII码‘0’=30H=48 ,1到9依次+1类推‘a’=61H=97 ,b到z依次+1类推‘A’=41H=65 ,B到Z依次+1类推第四章运算符一、常用运算符1、算术:+,-,*,/,%2、关系:>,<,>=,<=,==,!=3、逻辑:!,&&,||4、赋值:=,+=,-=,*=,/=,%=5、逗号运算符:,说明:1、关系和逻辑运算的结果只有两个,要么为真,要么为假2、C语言中0表示假,非0表示真3、c语言中将真赋值给其他变量时,其值为1二、优先级1、算术>关系>逻辑>赋值>逗号2、!(非)优先于算术3、*,\,% 优先于+,-4、>,<,>=,<=, 优先于==,!=5、&& 优先于||6、同级别运算符一般都是自左向右结合例如:a*b/c*e,等价于((a*b)/c)*e7、赋值运算符是自右向左结合例如:a=b=c=1,等价于a=(b=(c=1))三、自增(++),自减(--)1、i++,++i独立使用时没有区别,都等价于i=i+12、i--,--i独立使用时没有区别,都等价于i=i-13、i++,++i在其他语句中使用时是有区别的,i++,先使用i,再i=i+1例如:y=x++;等价于y=x;x=x+1;++i,先i=i+1,再使用i例如:y=++x;等价于x=x+1;y=x;4、i--,--i的区别等同i++,++i5、特殊情况1:0 && i++语句中,i++永运不执行6、特殊情况2:0 && ++i语句中,++i运不执行7、特殊情况3:1|| i++语句中,i++永运不执行8、特殊情况4:1|| ++i句中,++i运不执行9、特殊情况5:a++,b++,a+b语句中,先执行a=a+1,再执行b=b+1,最后a+b四、赋值1、+=,-=,*=,/=等复合赋值语句的优先级等同于=2、a+=3+4等价于a+=(3+4)3、a=b=c=4;等价于b=c;a=b;五,逗号运算符1、运算方向是自左向右例如:a++,b++,a+b等价于a++;b++;a+b;2、逗号表达式的结果为最后一个表达式的值例如:执行x=(3,4,5,6);后x=6第五章语句一、表达式:通过各种运算符将常量或变量连起来的式子就是表达式二、表达式后加;分号,构成语句三、空语句,只有一个;分号的语句四、复合语句,{。

Vivado_HLS学习笔记1-数据类型

Vivado_HLS学习笔记1-数据类型

Vivado_HLS学习笔记1-数据类型数据类型⽀持的C/Cpp类型Character Typeschar 8bitswchar_tInteger Typessigned char 8bits[signed] short [int] 16bits[signed] int 32bits[signed] long [int] 32bits[signed] long long [int] 64bitsInteger Types(unsigned)unsigned char 8bitsunsigned short [int] 16bitsunsigned [int] 32bitsunsigned long [int] 32bitsunsigned long long [int] 64bitsFloating-point Typesfloatdoublelong double其他类型bool⽀持任意精度类型Arbitrary Precision Data TypesCpp ap_int<W> (1024bits) //#include <ap_int.h>ap_uint<W> (1024bits) //#include <ap_int.h>Cpp ap_fixed<W,I,Q,O,N> //#include <ap_fixed.h>ap_ufixed<W,I,Q,O,N> //#include <ap_fixed.h>ap_fixed<W,I,Q,O,N>W-定点数的整体位宽I-整数部分的位宽Q-量化模式,对⼩数部分的量化,默认为AP_TRN_ZERO(直接舍去尾部低位), 可选AP_RND(四舍五⼊).O-溢出模式,对整数部分的溢出,默认为AP_WRAP(直接舍去⾸部⾼位), 可选为AP_SAT(饱和,所有⾮符号位补1,填充到最⼤值) //ap_fixed<W,I,Q,O,N> //#include <ap_fixed.h>ap_fixed<3,2> var1 = 1.25; //1.25('b01.01)->1.0('b01.0)ap_fixed<3,2,AP_RND> var2 = 1.25; //1.25('b01.01)->1.5('b01.1)ap_fixed<4,4> var3 = 19; //19('b01_0011)->3('b0011)ap_fixed<4,4,AP_RND,AP_SAT> var4 = 19; //19('b01_0011)->7('b0111)_⽆符号4位数的最⼤值浮点数double vf2(5.0);float vf3(5.0f); //float类型要加后缀f, hls_math.h任意精度类型的⽤法在头⽂件中#include <ap_int.h>#define W 18#define __NO_SYNTH__#ifdef __NO_SYNTH__typedef int data_t;typedef int prod_t;#elsetypedef ap_int<W> data_t;typedef ap_int<2*W> prod_t;#endif//* sizeof can check the width of a data.//#include <typeinfo>//typeid(var1).name() //返回变量的类型prod_t ScalarMult(data_t A, data_t B);变量的初始化⽅式int var_i = -6;ap_int<6> a_6bit_var_c = -22;ap_int<6> a_6bit_var_d(-22);ap_int<6> a_6bit_var_r2("0b101010",2); //6bit-⽤2进制数据初始化->'d42ap_int<6> a_6bit_var_r8("0o52",8); //6bit-⽤8进制数据初始化值->'d42ap_int<6> a_6bit_var_r10("-22",10); //6bit-⽤10进制数据初始化'd-22ap_int<6> a_6bit_var_r16("0x2A",16);//6bit-⽤16进制数据初始化->'d42ap_int<6> a_6bit_var_r2("101010",2); //6bit-⽤2进制数据初始化->'d42ap_int<6> a_6bit_var_r8("52",8); //6bit-⽤8进制数据初始化值->'d42ap_int<6> a_6bit_var_r16("2A",16);//6bit-⽤16进制数据初始化->'d42常数的处理常数参与运算: 必须显式说明类型;HLS:不⽀持递归函数;。

【C语言C++编程学习笔记】你的第一个Windows程序!高级操作~

【C语言C++编程学习笔记】你的第一个Windows程序!高级操作~

【C语⾔C++编程学习笔记】你的第⼀个Windows程序!⾼级操作~什么是windows编程?了解到Windows API 编程、Windows编程、Windows SDK 编程是⼀个概念。

今天我们运⽤C语⾔来实现你的第⼀个真正的Windows程序。

windows.h 头⽂件介绍:编写Windows程序,⾸先要包含 windows.h 头⽂件。

windows.h 还包含了其他⼀些Windows头⽂件,例如:● windef.h:基本类型定义● winbase.h:内核函数● wingdi.h:⽤户接⼝函数● winuser.h:图形设备接⼝函数这些头⽂件定义了Windows的所有数据类型、函数原型、数据结构和符号常量,也就是说,所有的Windows API都在这些头⽂件中声明。

在C语⾔中,程序都是“⿊屏”的,称为控制台程序(Console Application)。

这套教程要讲的是带界⾯的Windows程序(Windows Application),也称为GUI程序(GUI Application)。

控制台程序以 main() 为⼊⼝函数,Windows程序以 WinMain() 为⼊⼝函数,动态链接库(DLL)以 DllMain() 为⼊⼝函数,不同的⼊⼝函数决定了不同类型的程序。

WinMain() 函数的原型为:int WINAPI WinMain(HINSTANCE hInstance, // 当前窗⼝句柄HINSTANCE hPrevInstance, // 前⼀个窗⼝句柄,Win32下为NULL(Win16留下的废物,⽬前已弃⽤)LPSTR lpCmdLine, // 命令⾏参数int nCmdShow // 窗⼝显⽰⽅式);先不要急于理解这些参数的含义,我先给⼤家写⼀个简单的不带⿊屏的、真正的Windows程序:#includeint WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){// 调⽤API 函数MessageBoxint nSelect = MessageBox(NULL, TEXT(""), TEXT(), MB_OKCANCEL);if(nSelect == IDOK){MessageBox(NULL, TEXT("你点击了“确定”按钮"), TEXT("提⽰"), MB_OK);}else{MessageBox(NULL, TEXT("你点击了“取消”按钮"), TEXT("提⽰"), MB_OK);}return0;}运⾏结果:点击“确定”或“取消”按钮,⼜会弹出⼀个新的提⽰框。

C语言学习入门笔记之函数

C语言学习入门笔记之函数

函数笔记1.为什么要用函数函数就是功能。

每一个函数用来实现一个特定的功能。

函数的名字应反映其代表的功能。

1.一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。

对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组成一个C程序。

这样便于分别编写和编译,提高调试效率。

一个源程序文件可以为多个C程序共用。

2.一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。

一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的.而不是以函数为单位进行编译的。

3.C程序的执行是从main函数开始的.如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。

4.所有函数都是平行的.即在定义函数时是分别进行的,是互相独立的。

一个函数并不从属于另一个函数,即函数不能嵌套定义。

函数间可以互相调用,但不能调用main函数。

main 函数是被操作系统调用的。

5.函数的分类:从用户使用的角度看,函数有两种。

①库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。

②用户自己定义的函数。

它是用以解决用户专门需要的函数。

从函数的形式看,函数分两类。

①无参函数。

在调用无参函数时,主调函数不向被调用函数传递数据。

无参函数一般用来执行指定的一组操作。

无参函数可以带回或不带回函教值.但一般以不带回函数值的居多。

②有参函数。

在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据。

一般情况下,执行被调用函数时会(返回)得到一个函数值,供主调函数使用。

此时有参函数应定义为与返回值相同的类型。

2.怎样定义函数1.为什么要定义函数C语言要求在程序中用到的所有函数,必须“先定义,后使用”。

定义函数应包括以下几个内容:(1) 指定函数的名字,以便以后按名调用。

(2) 指定函数的类型,即函数返回值的类型。

C语言学习笔记

C语言学习笔记

1.我们把由高级语言编写的程序称为“源程序”2.把由二进制代码表示的程序称为“目标程序”,这些具有翻译功能的软件称为“编译程序”,每一种高级语言都有与它相应的编译程序。

C语言源程序经达C语言编译程序编译之后生成一个后缀为.OBJ 的二进制文件(称为目标文件),最后还要由称为“链接程序”(link)的软件,把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为EXE的可执行文件。

3.算法是指为解决某个特定问题而采取的确定且有限的步骤。

一个算法应当具有以下五个特性:1.有穷性。

一个算法应当包含有限个步骤。

也就是说,在执行若干个操作步骤之后算法将结束,而且每一步都在合理的时间内完成。

2.确定性。

算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的结果。

3.可行性。

算法中指定的操作,都可以通过已经实现的基本运算执行有限次后实现。

4.有零个或多个输入。

在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入得到。

5.有一个或多个输出。

算法的目的是为了求解,这些解只有通过输出才能得到。

算法可以用各种描述方法进行描述,最常用的是伪代码和流程图。

伪代码是一种近似高级语言但又不受语法约束的一种语言描述方式,这在英语国家中使用起来非常方便。

4.结构化程序由三种基本结构组成。

一、顺序结构。

当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移。

二、选择结构。

if语句,switch语句都可构成选择结构。

三、循环结构。

有两种当型循环和直到型循环。

已经证明,由三种基本结构组成的算法结构可以解决任何复杂的问题。

由三种基本结构所构成的算法称为结构化算法。

由三种基本结构所构成的程序称为结构化程序。

C语言既具有高级语言的一切功能,也具有低级语言的一些功能,因此它既可以编写系统软件,也可以用来编写应用软件。

main是主函数名,C语言规定必须用main作主函数名。

C++学习笔记(一)cout与printf的不同之处

C++学习笔记(一)cout与printf的不同之处

C++学习笔记(⼀)cout与printf的不同之处 作为⼀个嵌⼊式开发的猿,使⽤打印调试程序是必不可少的,拿到新的项⽬第⼀件事就是捣⿎打印。

这次也不例外有打印才有耍下去的底⽓。

在之前零零碎碎的C++学习中,还是⼀边学⼀边做项⽬的状态下能⽤printf解决那么专门学习“打印”是不存在的,今⼉⼀看C++的cout 真⼼好⽤,6的⼀批。

不好好玩玩对不起C++。

cout: Cout 是ostream 类的⼀个对象,声明在iostream ⽂件中,属于std名字空间。

综上,想要使⽤cout需要在程序中包含 iostream,作⽤类似C语⾔的头⽂件,为了区分没有 .h 后缀。

练习使⽤的代码及运⾏如下:#include <iostream>#include <string>using namespace std;int main(int argc, char **argv){float a = 1.002;int b = 1;char c = 'a';cout<<"a:"<<a<<" b:"<<b<<" c:"<<c <<endl;int d = c;cout<<"d:"<<d<<endl;string str = "test str ";cout<<str<<endl;system("pause");return0;}从上述代码可以看出:1. cout 结尾使⽤endl 其实相当于使⽤ printf("\n"); cout 打印不需要专门加换⾏使⽤endl可以换⾏2.cout 可以⾃动判断输出的类型,不需要使⽤%d %s 来区分。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++学习笔记(一)--基础知识sizeof用法分类:C++学习笔记2009-12-27 23:39 2718人阅读评论(11) 收藏举报sizeofsizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节。

返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本。

他是一个和机器相关的unsigned类型,其大小足以保证内存中对象的大小。

1、什么是sizeof首先看一下sizeof在msdn上的定义:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.看到return这个字眼,是不是想到了函数?错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的吗?sizeof可以,所以sizeof不是函数。

网上有人说sizeof是一元操作符,但是我并不这么认为,因为sizeof更像一个特殊的宏,它是在编译阶段求值的。

举个例子:cout<<sizeof(int)<<endl; // 32位机上int长度为4cout<<sizeof(1==2)<<endl; // == 操作符返回bool类型,相当于cout<<sizeof(bool)<<endl;在编译阶段已经被翻译为:cout<<4<<endl;cout<<1<<endl;这里有个陷阱,看下面的程序:int a = 0;cout<<sizeof(a=3)<<endl;cout<<a<<endl;输出为什么是4,0而不是期望中的4,3???就在于sizeof在编译阶段处理的特性。

由于sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成类型。

=操作符返回左操作数的类型,所以a=3相当于int,而代码也被替换为:int a = 0;cout<<4<<endl;cout<<a<<endl;所以,sizeof是不可能支持链式表达式的,这也是和一元操作符不一样的地方。

结论:不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。

2、sizeof的用法sizeof有两种用法:(1)sizeof(object)也就是对对象使用sizeof,也可以写成sizeof object 的形式。

(2)sizeof(typename)也就是对类型使用sizeof,注意这种情况下写成sizeof typename是非法的。

下面举几个例子说明一下:int i = 2;cout<<sizeof(i)<<endl; // sizeof(object)的用法,合理cout<<sizeof i<<endl; // sizeof object的用法,合理cout<<sizeof 2<<endl; // 2被解析成int类型的object, sizeof object的用法,合理cout<<sizeof(2)<<endl; // 2被解析成int类型的object, sizeof(object)的用法,合理cout<<sizeof(int)<<endl;// sizeof(typename)的用法,合理cout<<sizeof int<<endl; // 错误!对于操作符,一定要加()可以看出,加()是永远正确的选择。

结论:不论sizeof要对谁取值,最好都加上()。

3、数据类型的sizeof(1)C++固有数据类型32位C++中的基本数据类型,也就char,short int(short),int,long int(long),float,double, longdouble大小分别是:1,2,4,4,4,8, 10。

考虑下面的代码:cout<<sizeof(unsigned int) == sizeof(int)<<endl; // 相等,输出1unsigned影响的只是最高位bit的意义,数据长度不会被改变的。

结论:unsigned不能影响sizeof的取值。

(2)自定义数据类型typedef可以用来定义C++自定义类型。

考虑下面的问题:typedef short WORD;typedef long DWORD;cout<<(sizeof(short) == sizeof(WORD))<<endl; // 相等,输出1cout<<(sizeof(long) == sizeof(DWORD))<<endl; // 相等,输出1结论:自定义类型的sizeof取值等同于它的类型原形。

(3)函数类型考虑下面的问题:int f1(){return 0;};double f2(){return 0.0;}void f3(){}cout<<sizeof(f1())<<endl; // f1()返回值为int,因此被认为是intcout<<sizeof(f2())<<endl; // f2()返回值为double,因此被认为是doublecout<<sizeof(f3())<<endl; // 错误!无法对void类型使用sizeofcout<<sizeof(f1)<<endl; // 错误!无法对函数指针使用sizeofcout<<sizeof*f2<<endl; // *f2,和f2()等价,因为可以看作object,所以括号不是必要的。

被认为是double结论:对函数使用sizeof,在编译阶段会被函数返回值的类型取代,4、指针问题考虑下面问题:cout<<sizeof(string*)<<endl; // 4cout<<sizeof(int*)<<endl; // 4cout<<sizof(char****)<<endl; // 4可以看到,不管是什么类型的指针,大小都是4的,因为指针就是32位的物理地址。

结论:只要是指针,大小就是4。

(64位机上要变成8也不一定)。

顺便唧唧歪歪几句,C++中的指针表示实际内存的地址。

和C不一样的是,C++中取消了模式之分,也就是不再有small,middle,big,取而代之的是统一的flat。

flat模式采用32位实地址寻址,而不再是c中的segment:offset模式。

举个例子,假如有一个指向地址f000:8888的指针,如果是C类型则是8888(16位, 只存储位移,省略段),far类型的C指针是f0008888(32位,高位保留段地址,地位保留位移),C++类型的指针是f8888(32位,相当于段地址*16 + 位移,但寻址范围要更大)。

5、数组问题考虑下面问题:char a[] = "abcdef";int b[20] = {3, 4};char c[2][3] = {"aa", "bb"};cout<<sizeof(a)<<endl; // 7cout<<sizeof(b)<<endl; // 20*4cout<<sizeof(c)<<endl; // 6数组a的大小在定义时未指定,编译时给它分配的空间是按照初始化的值确定的,也就是7。

c是多维数组,占用的空间大小是各维数的乘积,也就是6。

可以看出,数组的大小就是他在编译时被分配的空间,也就是各维数的乘积*数组元素的大小。

结论:数组的大小是各维数的乘积*数组元素的大小。

这里有一个陷阱:int *d = new int[10];cout<<sizeof(d)<<endl; // 4d是我们常说的动态数组,但是他实质上还是一个指针,所以sizeof(d)的值是4。

再考虑下面的问题:double* (*a)[3][6];cout<<sizeof(a)<<endl; // 4cout<<sizeof(*a)<<endl; // 72cout<<sizeof(**a)<<endl; // 24cout<<sizeof(***a)<<endl; // 4cout<<sizeof(****a)<<endl; // 8a是一个很奇怪的定义,他表示一个指向double*[3][6]类型数组的指针。

既然是指针,所以sizeof(a)就是4。

既然a是执行double*[3][6]类型的指针,*a就表示一个double*[3][6]的多维数组类型,因此sizeof(*a)=3*6*sizeof(double*)=72。

同样的,**a表示一个double*[6]类型的数组,所以sizeof(**a)=6*sizeof(double*)=24。

***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4。

至于****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8。

6、向函数传递数组的问题考虑下面的问题:#include <iostream>using namespace std;int Sum(int i[]){int sumofi = 0;for (int j = 0; j < sizeof(i)/sizeof(int); j++) //实际上,sizeof(i) = 4{sumofi += i[j];}return sumofi;}int main(){int allAges[6] = {21, 22, 22, 19, 34, 12};cout<<Sum(allAges)<<endl;system("pause");return 0;}Sum的本意是用sizeof得到数组的大小,然后求和。

相关文档
最新文档