1.typedef struct child

{
string name;
struct child* next;
};

child* head;
head = (child*)malloc(sizeof(child));

cin>>head->name;
0x00c42386处有未经处理的异常:oxc0000005:写入位置oxcdcdcd时发生访问冲突。0xC0000005 表示使用了未创建(未分配内存空间)的变量或对象。0xC0000005错误通常是由于内存访问错误引起,可能是你的程序有错误的指针操作或者访问了空对象,内存未初始化。child* head;未初始化变量啊string name;这个是一个class,你分配内存之后没有对head做初始化,只有在指针,既分配了空间,又初始化以后,才可以用。
#include <iostream>
using namespace std;
class sss{
  public:
  sss(){
    cout<<'s';
  }
};

int main(){
  sss s1;
  return 0;
}

譬如这段代码,sss s1;这句话就是定义变量,在栈空间为s1分配内存并初始化class是可以定义方法的……需要初始化的……struct相当于就是一块内存。string是一个class,是需要进行初始化的然后你把它放在struct里面,malloc只是为他分配了内存,但是没有初始化所以string里面的东西全是乱的,可能出各种奇怪的问题就是说,class里面放class或者struct里面放struct,class里面放struct也有但不多。这个错误犯了好几遍了。
可以这样用:
typedef struct child
{
                 char name[20];
                 struct child* next;
};
child* head;
                child* tail;
                head = (child*)malloc( sizeof(child));
 
cin>> head->name;
 
2.c++中关于字符串的读入——cin、getline、get、gtes(查询+思考+总结)

1、cin读入一个字符:
char c;cin>>c;
2、cin读入一个字符串:
char s[10];cin >> s;(c风格字符串)    
string str;cin >> str;(c++的string)
3、cin.get()读入一个字符:
char c;c=cin.get();
4、cin.get()读入一个字符串
char s[10];cin.get(s,10);
5、cin.getline()读入字符串(c风格和string都行,只要要是char *)
cin.getline(s,5)//默认回车
空格不行
//cin流
6、getline(cin,str)
str为string,可以读空格!
 
 
3.文件
ifstream fin;
fin.open( "data.txt");
if(fin.bad())
{
   cout<< "文?件t读??取??失???败???" <<endl;
   return 0;
}
string input_str;
fin>>input_str;
fin.close();
 
//输出到文件
 ofstream ocout;
 ocout.open( "output.txt" );
 ocout<<"字??符??串??个?数?y:?o"<<str.size()<<endl;
 ocout.close();
 
4.//递归函数

int fuc_naive_recur(int i)
{
    if(i==0) return 0;
    if(i==1) return 1;
    return fuc_naive_recur(i-1)+fuc_naive_recur(i-2);
}
 
5.//判断输入非法

  • 例如判断输入的int值是否超出范围,或输入字符串等非法输入。
  • int n;cin>>n;if(cin.fail())
  • cout<<“输入非法!”<<endl;//例如此时输入了字符‘a’或输入的值超出了intmax。则会认为输入非法

6.读入一个文件

ifstream fin;
         fin.open (filePath. c_str());
 
    if(fin .bad())
    {
                cout<< "read file failed" <<endl;
                return 0;
    }
    string input_xml = 0;
         string str = 0;
         while(!fin .eof())
        {
 
                getline(fin ,str);
                input_xml += str ;
        }
  
    fin.close ();
 
    //cout<<input_xml<<endl;
 
7.随机数,申请数组空间

随?机??生???成??5*10^6到??5*10^7个?数?y,??取??5个?测a试??集??
int main(int argc,char** argv)
{
                 long long N = 50000000 ;
                 long long i = 0;
                 int *myarray;
                myarray = ( int*)malloc(sizeof (int)*5*N);
                
                 if(myarray == NULL)
                {
                                cout<< "数?y组???空?间?申???请?失???败???!??" ;
                                 return 0;
                }
                srand(time(NULL));
    for(i = 0 ;i<N;i++)
                {
                                
                                myarray[i] = rand();
                                cout<<myarray[i]<<endl;
                                 //Sleep(1000);
                }
}
 
8.建立基于对话框的程序,在Dlg.cpp的OnPaint()函数中

else
                {
                                CPaintDC dc( this); 
                                CString straa = CString( "asdfasd");
                                dc.TextOut(100,200,straa);
                                dc.SetPixel(100,200,RGB(255,0,255));
                                dc.Ellipse(100, 100, 30, 30); //圆2心?坐??标???,??半??径?
                                CDialogEx::OnPaint();
                }
 
 
9.C++类继承例子

//drawable.h文件里
class drawable{
public:
                 virtual void draw(){}
                drawable( int len, char c):_l(len), _c(c){}
 
protected:
                 int _l;
                 char _c;
};
 
class circle:public drawable{
public:
                 void draw();
                circle( int len, char c):drawable(len, c){}
};
 
class square:public drawable{
public:
                 void draw();
                square( int len, char c):drawable(len, c){}
};
 
//drawable.cpp文件里
#include "drawable.h"
#include "iostream"
using namespace std;
 
void triangle::draw()
{
                 for(int i =1;i<= _l;i++)
                {
                                 for(int j=0;j<(_l+1) - i;j++)
                                {
                                                cout<< " ";
                                }
                                 for(int j=1;j<=i;j++)
                                                cout<<_c<< " ";
                                cout<<endl;
                }
}
 
void square::draw()
{
                 for(int i = 0;i<_l;i++)
                {
                                 for(int j=0;j<_l;j++)
                                {
                                                cout<<_c<< " ";
                                }
                                cout<<endl;
                }
}
 
 
//main函数调用
#include <iostream>
#include <string>
#include "drawable.h"
 
using namespace std;
int main()
{
                 int shap;
                cout<< "请?选?择?形?状???:?o1.正y方??形? 2.三?y角?形? 3.圆2形?" ;
                cin>>shap;
                 int len;
                cout<< "请?输??入??边??长??或??者?半??径?参?数?y:?o" ;
                cin>>len;
                 char ch;
                cout<< "请?输??入??填??充?字??符??:" ;
                cin>>ch;
                drawable *_draw;
                 switch(shap)
                {
                 case 1:
                                _draw = new square(len, ch);
                                 break;
                 case 2:
                                _draw = new triangle(len, ch);
                                 break;
                 case 3:
                                _draw = new circle(len, ch);
                                 break;
                }
                _draw->draw();
                 return 0;
}
 
 
10.C++构造函数和运算符重载

typedef struct Matrix
{
    long long a;
    long long b;
    long long c;
    long long d;

Matrix(void):a(1),b(1),c(1),d(0){};

Matrix(const   long long& aa,const   long long& bb,const   long long& cc,const   long long &dd):
   a(aa),b(bb),c(cc),d(dd){};

Matrix(const Matrix& tmp):a(tmp.a),b(tmp.b),c(tmp.c),d(tmp.d){};

Matrix operator *( Matrix& tmp)
   {
         long long p,q,r,t;
       p = a*tmp.a+b*tmp.c;
       q = a*tmp.b+b*tmp.d;
       r = c*tmp.a+d*tmp.c;
       t = c*tmp.b+d*tmp.d;
       return Matrix(p,q,r,t);
   };
}Matrix;

 
11.C++时间函数

#include <time.h>

    
clock_t start,end;
    start = clock();
    fuc_pre_calc();
    end = clock();
 cout<<"   使用时间:" <<(float)(end - start);
 
12.string字符串操作

字符串操作,如字符串分割、split\find\insert....可以认为必考

string str = “abcde”

const char* ch = str.c_str();

13.C++中class的属性和方法,默认是private的,所以默认情况下构造函数也是private,所以是无法实例化的。

struct默认是public。

14.对于函数比如virtual void setPixel(int ,int ,int){}必须加上{},不然出现external link错误,还没发现原因,待查……

15.malloc和new的区别

malloc和free是C语言中的函数。在C语言中只能使用malloc和free;

new和delete是C++中的运算符,可执行构造函数、析构函数,返回指针;

共同点:都可以在堆上动态分配和释放内存。

C++ 细节知识的更多相关文章

  1. c/c++细节知识整理

    这篇文章总结了部分c/c++琐碎的细节知识. 目录如下: (一)bool类型 知识点出处较多,无法一一列举,向原作者致敬. (一)bool类型 在c99标准以前,c语言并没有定义bool类型.如果需要 ...

  2. LaTeX的一些宏包及细节知识

    文章来源:LaTeX的一些宏包及细节知识http://blog.chinaunix.net/uid-20289887-id-1710422.html ps:我的机器上软件并不能直接运行通,下面“代码” ...

  3. java细节知识

    代码优化细节 (1)尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是fin ...

  4. Php 笔记4-----php 细节知识

    从 php5开始  php.ini  register_globals参数为OFF  ,禁止全局变量. 以前的情况下,  全局变量是默认为On的 , 所以,浏览器的表单中控件,会自动根据name在服务 ...

  5. GCT之语文细节知识

    以下是在微博中看到的,大部分人都会读错的汉字,这也是历届GCT考试的前几道选择题可能会出的题库资源吧,高考的时候也大都考的这些,拿来共享给大家.一定要看哦.

  6. .NET细节知识总结,不断更新

    1.catch (Exception)和catch (Exception e) Exception 类包含许多子类 程序执行的时候要将每一个类都搜索一遍 以找到符合的异常类 这样是蛮消耗资源的 影响效 ...

  7. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: stream in json form ----json.loads(str)----- ...

  8. Android基础知识-1

    1.Android的Activity任务栈 在Android的系统中,在APP运行时每个APP都会默认有一个任务栈,任务栈的名称以APP的包名命名.任务栈是一中先进后出的结构,APP中每一个调用的Ac ...

  9. Django知识总结(三)

    拾伍 ● Ajax技术 一 ● Ajax定义 Ajax: 异步的 JavaScript 和 XML (Asynchronous+Javascript+XML) 通过Ajax, 我们可以在不重新加载整个 ...

随机推荐

  1. HDU-1072-Nightmares

    这题可以用dfs写,我们记忆化搜索. 我们定义一个step和time数组,分别表示走到这点的最小步数,time表示走到该点炸弹还剩多少时间. 递归边界一是,如果走到该点,时间等于0,我们就返回. 如果 ...

  2. C#基础-数组-冒泡排序

    冒泡排序基础 冒泡排序原理图分析 tmp在算法中起到数据交换的作用 int[] intNums = { 12,6,9,3,8,7 }; int tmp = intNums[0]; // 一共5次冒泡, ...

  3. Linux下配置Django_Apache_Mysql环境(CentOS 7.5)

    本文将介绍如何在Linux上部署Django + Mysql + Apache环境.我们知道,Django内置的http服务器只能工作在单线程下,做开发和调试时候是可以的,但是生产环境通常都会有多用户 ...

  4. CodeForce:16C-Monitor

    传送门:http://codeforces.com/problemset/problem/16/C Monitor time limit per test0.5 second memory limit ...

  5. Linux学习-磁盘配额 (Quota) 的应用与实作

    什么是 Quota 在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如 果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其他使用者的使用权力! ...

  6. 【MySQL】MySQL备份和恢复

    一.为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种. 硬件故障 软件故障 自然灾害 黑客攻击 误操作 (占比最大) 所以, 为了在数据丢失之后能够 ...

  7. 修改Typora的快捷键【markdown软件】

    修改Typora的快捷键 魔芋:Typora是一款不错的编写markdowm的软件,推荐使用. 魔芋:修改这个文件conf.user.json   "keyBinding": { ...

  8. quarz spring boot

    package com.pkfare.task.manage.config; import org.quartz.spi.TriggerFiredBundle; import org.springfr ...

  9. python week08 并发编程之多进程--理论部分

    一 什么是进程 进程:正在进行的一个过程或者说一个任务.       而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): Jame在一个时间段内有很多任务要做:python学习任 ...

  10. POJ 1952

    BUY LOW, BUY LOWER Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7748   Accepted: 267 ...