遇到的C/C++问题

来源:互联网 发布:php radio行取值 编辑:程序博客网 时间:2024/06/05 09:18

好久不写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中删除元素:
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提供的函数了。。。

0 0
原创粉丝点击