c++的一些头文件:
#include<stdio.h> c语言的标准输入流
#include <iostream.h> C++的标准输入流
node * root=(node*)calloc(1,sizeof (node));
typedef struct node //链式存储二叉树 { int num; node * lchild; node * rchild; };
预定义常量和类型
#define TRUE 1 //定义常量
typedef int Status //定义类型
c++的变量
char a= 1; //在java中是报错误的;在c++中是可以通过的;在标准输出流中输出的是乱码;实际上是Unicode字符;
char a= '1'; //就是一个字符;
int aaa=0; char a='1'; char b = 1; printf("%d\n",a); //对应Unicode值为49 printf("%d\n",b); //值为1 printf("%c\n",a); //输入字符为1 aaa=aaa+a; printf("%d\n",aaa); //为49 aaa =aaa+b; printf("%d\n",aaa); //为50
注:与java的区别,java实现实现上面的代码需要强制转换。
指针
int a=1; int * p; p=&a; //&a表示取地址 *p=2; // printf("%d\n",*p); //2 a与p有相同的地址 printf("%d\n",a); //2
指针和数组的区别:
int i,a[]={3,4,5,6,7,3,7,4,4,6}; for (i=0;i<=9;i++) { printf ( “%d”, *(a+i) ); //同a[i] }
c++的字符串,字符数组,字符指针的处理以及传递
Test 1
void init(LNode &L){ //产生初始化种群,其中L为链表的头结点 Node * p; Node * r; p=L; for(int i=0;i<N;i++){ r= (Node*)malloc(2*sizeof(Node)); string s=getGene(); for(int j=0;j<SIZE;j++) r->gene[j]=s[j]; r->next=NULL; //在末指针下添加 r->number=i; //给每个基因编号 p->next = r; p=p->next; } }
Test 2
void init(){ //产生初始化种群 Pt=(Node*)malloc(2*sizeof(Node)); Node * p=Pt; Node * r; for(int i=0;i<N;i++){ r= (Node*)malloc(2*sizeof(Node)); string s=getGene(); for(int j=0;j<SIZE;j++) r->gene[j]=s[j]; r->next=NULL; //在末指针下添加 r->number=i; //给每个基因编号 p->next = r; //不带头结点初始化 p=p->next; } }
备注:
Node * p=Pt; //这行命令到底表达什么内容呢?
是否p与节点Pt指向同一个内存空间呢?
赋值到底是值传递还是引用传递的?也就是说两个到底是不是一个内存块
结点分析:
只改变结点的指向,并不改变结点的内容。
srand((unsigned) time(NULL)); //的作用
C++基础第二篇