好久不写C,一些基础都给忘了,下面是问题。
1.函数名: strdup用法,百度了下,
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
strdup()主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s不相干。
2.C++类的成员后面接:
很基础的东西,就是赋值,
Rule::Rule(_rule* r) : head(r->head), type(r->type), body_length(r->length)
像这个就是把r->head赋值给head这样~
3.C的结构体形如
typedef struct __literals {
int atoms[MAX_ATOM_LENGTH];
int length;
}_literals;
后面这个_literals系结构体别名,可以当结构体名用来新建变量的~
先这么多了,都是以前学过的。。。年纪大了,智商捉急。。。。
补充:
今个又遇到了union,extern;
一个个来吧,
union{
int a;
char b;
char* c;
}
共享内存,3个量都从同一地址开始读,用的时候不好判断是哪个~
extern把别的cpp里的定义的搞来用~
赶脚当年学的C/C++都是酱油啊。。。忽然发现好多不清楚。。
一一说明今个的问题吧。。都好弱。。
1.在别的地方里面调用类的函数,需要把函数设成static;
2.assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行;使用形如assert(xxx)这样。
3.vector中删除元素:
4.vector复制另一个vector内容:v1.insert(v1.end(), v2.begin(), v2.end() );将v2加到v1结尾,insert具体不描述了~
5.set, 删除只能用s.erase(value),不能直接删除位置,set是边存边排序的,另外set的find找到返回迭代器位置,找不到返回end()。
6.形如vector< set<int> >在netbeams下写必须在<和s间以及>和>加空格~原因不详~想起来了>>是系统用了的符号。
先就这些了,另外指针和引用还略混乱,等几天有空仔细看看写篇~
7.结构体初始化,是要用memalloc才能用的,一直捣鼓类,不记得有这茬了,结果dubeg半天那个数据就是乱码,最后发现没初始化结构体;类有初始化函数就木有这一步了,坑啊。
8.char*的长度用strlen(char*)求,头文件为string.h;有必要看看string.h提供的函数了。。。
1.在别的地方里面调用类的函数,需要把函数设成static;
2.assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行;使用形如assert(xxx)这样。
3.vector中删除元素:
for(vector<int>::iterator iter=vec.begin(); iter!=vec.end(); )
{
if( *iter == 10)
iter = vec.erase(iter);
else
iter ++ ;
}
4.vector复制另一个vector内容:v1.insert(v1.end(), v2.begin(), v2.end() );将v2加到v1结尾,insert具体不描述了~
5.set, 删除只能用s.erase(value),不能直接删除位置,set是边存边排序的,另外set的find找到返回迭代器位置,找不到返回end()。
6.形如vector< set<int> >在netbeams下写必须在<和s间以及>和>加空格~原因不详~想起来了>>是系统用了的符号。
先就这些了,另外指针和引用还略混乱,等几天有空仔细看看写篇~
7.结构体初始化,是要用memalloc才能用的,一直捣鼓类,不记得有这茬了,结果dubeg半天那个数据就是乱码,最后发现没初始化结构体;类有初始化函数就木有这一步了,坑啊。
8.char*的长度用strlen(char*)求,头文件为string.h;有必要看看string.h提供的函数了。。。