c和c++讨论
2014乘风破浪2014
技术,没有止境
展开
-
struct与typedef struct区别和联系
现在终于明白了,特地整理下来。对于c和c++,这两者是不同的。1.对于c在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu;这里Stu相当于struct Student的别名,是结构名 定义新的结构体变量:Stu stu2;//或者struct Student stu2;去掉typedef:struct S原创 2016-03-04 23:12:23 · 939 阅读 · 0 评论 -
C++类的特性之多态
理解多态是指,不同类型的对象对于同一消息产生不同的行为。消息是指,对类的成员函数的调用,行为是指,成员函数的不同实现。在c++中多态分为两种:编译时的多态和运行时的多态。编译时的多态是通过函数重载或运算符重载实现的,运行时多态是通过继承和虚函数实现的。对应两种编译方式,动态联编和静态联编。联编的意思是,把一个标识符和一个内存地址联系起来的过程。静态联编是在程序运行之前完成的,动态联编是在程序进行的时原创 2017-05-29 11:57:02 · 330 阅读 · 0 评论 -
next_permutation函数
博客来自:http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件 下面是以前的笔记 与之完全相反的函数还有prev_permutation(1) int 类型的next_permutationint main() { int a[3]; a[0]=1;a[1]=2;a[原创 2016-03-05 15:59:00 · 839 阅读 · 0 评论 -
list容器
list 容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线性表,这样,对链表的任一位置的元素进行插入、删除和查找都是极快速的。list 的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。由于 list 对象的节点并不要求在一段连续的内存中,所以,对于迭代器,只能通过“++” 或“- -”的操作将迭代器移动到后继/前驱节点元素处。而不能对迭代器进原创 2017-02-03 18:33:37 · 418 阅读 · 0 评论 -
vector 向量容器
vector 向量容器不但能像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单、高效的容器,完全可以代替数组。头文件:#include vector 容器的下标是从0 开始计数的.对于vector 容器的容量定义,可以事先定义一个固定大小,事后, 可以随时调整其大小;也可以事先不定义,随时使用push_back()方法从尾部扩张元素,通常使用 pu原创 2017-02-03 18:32:53 · 448 阅读 · 0 评论 -
priority_queue 优先队列容器
其他与队列相同,一般情况下就是大的先出队重载“struct Info{string name;float score;//重载“bool operator {//按score 由小到大排列。如果要由大到小排列,使用“>”号即可return a.score}};//定义优先队列,元素类型为Info 结构体priority_queue pq;//原创 2017-02-03 18:32:07 · 239 阅读 · 0 评论 -
string类型
头文件:#include string s : 创建了字符串对象 s,s 是一个空字符串,其长度为0:给string对象赋值:1. string s; s="hello,C++STL.";2.string s; char ss[5000];//scanf 的输入速度比cin 快得多//scanf 是C 语言的函数,不支持string 对象原创 2017-02-03 17:02:51 · 241 阅读 · 0 评论 -
map容器
map 映照容器的数据结构也是采用红黑树来实现的,插入元素的键值不允许重复,比 较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。头文件:#include map 创建、元素插入和遍历访问//定义map 对象,当前没有任何元素map m;//插入元素,按键值的由小到大放入黑白树中m["Jack"]=98.5;m["Bomi"]=96原创 2017-02-03 17:01:50 · 331 阅读 · 0 评论 -
c++和c的头文件区分
一直都是胡乱用,也没有具体查过,今天闲来无事,一探究竟(以下内容来自百度和自己总结,如有错误,希望指正)c语言头文件有.h,且里面声明的实体都是全局的。而c++标准库的头文件不带.h,且里面的实体都是声明在名空间std里。举个例子: iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout;但在iostream里面,它所定义的东西都在名字空间std里面。所以你必须原创 2017-02-03 13:07:38 · 1192 阅读 · 0 评论 -
#ifndef...#endif 的用法
学着写头文件(其实是烧写芯片用到),发现c语言的宏定义里面有的东西需要理解,查了资料之后记下来,这里先说#ifndef…#endif 背景知识C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。 在c语言中,对同一个变量或者函数进行多次声明是不会报错的。 #ifndef…#endif属于预处理功能中三种(宏定义,文件包含和条件编译)中的第三原创 2017-01-29 13:02:25 · 1899 阅读 · 4 评论 -
exit函数
博客来源:http://blog.sina.com.cn/s/blog_5cec5bad0100b0x2.html一、exit()函数 函数声明:void exit(int state);exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会转载 2016-03-03 16:55:13 · 946 阅读 · 0 评论 -
指针与函数
1.指针作为函数参数当指针作为函数的参数时,相当于传入变量的地址,在函数中对指针所指的值进行修改,就是对变量本身进行的修改。下面的例子是计算一个数的立方。#include <iostream>using namespace std;int fun(int *pre){ *pre=*pre**pre**pre; return *pre;}int main(){ int原创 2016-03-01 11:39:33 · 985 阅读 · 0 评论 -
malloc与new函数详解
函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。这个在MSDN上可以找到相关的解释,具体内容如下:malloc returns a void pointer to the allo转载 2016-03-02 23:05:16 · 1065 阅读 · 0 评论 -
函数常见问题
函数原型即函数声明,告诉编译器有关函数接口的信息,编译器根据函数原型检测函数调用的正确性。由于函数原型没有实现代码,因此不需要参数名,只需要参数类型。函数参数的传递机制1.值传递 实际参数的值被赋值到形参,作为形参的初始化。函数体中对形参的访问修改都是在形参上操作的,与实际参数无关。若形参和实参类型不同,将对实参强制类型转换为形参类型,再赋值给形参。 2.引用传递 形参类型被定义为引用类型。函原创 2017-06-29 21:56:37 · 424 阅读 · 0 评论