C++primer学习
Jang1996
这个作者很懒,什么都没留下…
展开
-
C++primer(5th)第三章总结(string)
对String类型定义:string s1string对象初始化:page76 a.默认初始化:string s;//si默认空串b.拷贝初始化:string s2="value";string s2=s1;c.直接初始化:string s3("value");string s4(s3);string s4(10,'c');string s4; s4("value");//拷贝初始原创 2016-07-10 11:08:51 · 493 阅读 · 0 评论 -
sizeof规则
明确本质:sizeof是计算栈的大小,故静态变量不算在内 以下题来自牛客网,解析来自牛友,侵删在一个16位的机器,以下结构由于边界对齐浪费了多少空间()struct{ char a; int b; char c;}正确答案: D 你的答案: C (错误)8462(注意!!是结构体)结构体中字节对齐有两条规则:数据成员自对齐,即数据成员起始地址为数据原创 2016-11-10 10:45:39 · 476 阅读 · 0 评论 -
C语言的指针与数组详解
每次老栽在这一块! 1、首先来看简单的char *p = "Jang";//指针表示法创建字符串char p1[5] = {"Jang"};区别:1、在以上两种形式中p和p1都表示该字符串的地址,但是p1是常量,即能进行p1+2来表示后2个元素,但是不能++p1,p的类型是指向常量的指针,p本身不是常量,所以既可以p+2,也可以++p;2、可以修改p1里元素的值,但是不能修改p元素里的值比如:原创 2016-10-28 11:25:18 · 457 阅读 · 0 评论 -
C++常量详解(二)常量形参,常量返回值,常量成员函数
1.常量形参 当形参有顶层const或者底层const的时候,传给它常量对象或者非常量对象都是可以的,在这里我们主要考虑形参无const, 而实参有const的情况,其实这里也十分简单,只需要记住一点:底层const的限制,就可以了。2.常量返回值 这里也很简单,略过不提。3.常量成员函数 常量函数里的const是用来修饰*this的,其形式如下:int f() const{```}然原创 2016-10-08 17:46:27 · 1766 阅读 · 1 评论 -
C++常量详解(一)常量指针与常量引用的初始化
1、常量 1.1、常量的初始化: const对象一旦创建后其值就不能再改变,所以const对象必须初始化。这里我们要注意一点,像const int *p和const int &r都并不是const对象。因为const int *p只是表示不能通过p改变p所指的对象的值,p的值是可以变的,所以p可以不用初始化。至于r ,引用本身就不是对象,所以r也并不是const对象,r之所以一定初始原创 2016-10-08 11:46:23 · 3095 阅读 · 0 评论 -
2016/10/30 C++/C错题
以下一些答案解析转自牛客网牛友的分析,侵删int a =1,b =32 ;printf("%d,%d",a<<b,1<<32);答案:1,0执行a<<b时,编译器会先将b与31进行and操作,以限制左移的次数小于等于31。b&31=0,则a<<b=1执行1<<32时,编译器直接执行算术左移的操作。char *p="hello"; return p == "hello";C项:p存的是常量字符原创 2016-10-30 16:44:11 · 1407 阅读 · 2 评论 -
C语言一些函数
1、一只兔子旁边有100根萝卜, 兔子想把它们搬回家, 离家50米, 一次最多能搬运50根, 每走一米吃一根, 问:兔子最多能搬运多少根萝卜回家。答:16根问题分析:兔子如果只取一次到家, 他是不可能再回去取剩下的,所以必须中途返回取, 但是中途返回取消耗的代价是直接一次弄回家的3倍,故思路应该是中途回去取, 然后一次性取回家。每次从萝卜堆背多少根呢?如果背的少返回的次数肯定多, 代价消耗大转载 2016-10-30 09:57:06 · 230 阅读 · 0 评论 -
数组的那些题
int a[3][4],下面哪个不能表示 a[1][1]? *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(a[1]+1)原创 2016-11-09 20:08:13 · 266 阅读 · 0 评论 -
未解决的问题(vector)
vectorvector<vector<char>> v3{ "'a','b','c'", "'v','d','g'" };// vector<vector<char>> v3{ "a,b,c", "v,d,g" };// vector<vector<int>> v3{ "1,2,3,4", "5,6,7,8" }; /*for (int i = 0; i < 2; i++){原创 2016-07-18 09:40:05 · 354 阅读 · 0 评论 -
C++Primer课后练习exe6.33
void digui(vector<int> m,int i){ cout << m[i]; if (i < (m.size() - 1)){ i++; digui(m, i); } }原创 2016-07-14 21:18:53 · 364 阅读 · 0 评论 -
exe6.17
bool A(const string &s){ bool isA = false; for (auto c : s){ if (isupper(c)){ isA = true; } } return isA;}void B( string &s){//!!!这里多加了一个const for (aut原创 2016-07-14 10:28:44 · 335 阅读 · 0 评论 -
exercise6.10及6.12
void exchange(int *p, int *p1){ int temp; temp = *p1; *p1 = *p; *p = temp;}exchange(&i, &w); cout << i << endl << w;原创 2016-07-14 09:55:09 · 365 阅读 · 0 评论 -
C++Primer(5th)第六章page190代码详解
string::size_type find_char(const string &s, char c,string::size_type &occurs){ auto ret = s.size(); occurs = 0; for (decltype(ret)i = 0; i != s.size(); i++){ if (s[i] == c){原创 2016-07-14 09:08:49 · 646 阅读 · 0 评论 -
C++Primer(5th)学习-数组篇
初始化: int arr[10]={…} (!!!字符数组,有一个默认的“\0”, char arr[2]={‘a’,’b’}//错误,长度至少为3. char arr[]={‘a’,’b’}//自动添加”\0”) (!!!!不可这样: int arr[2]={2,3} int brr[]=arr;) (!!!可用数组初始化vector: vector v1(begin(arr),原创 2016-07-13 10:50:02 · 425 阅读 · 0 评论 -
KMP算法(未完)
我认为KMP算法主要用于减少次数,提高效率,但是在程序中只执行kmp算法,有bug,比如:bbbbbc和bbbbc。原创 2016-07-22 15:38:23 · 236 阅读 · 0 评论 -
C++Primer(5th)第三章学习总结-vector篇
声明:#include using std::vector (vector是模板而非类型,vector能容纳绝大多数对象作为其元素,但是由于引用不是对象,所以不存在包含引用的vector,vector的元素也可以是vector : vectorvector<int> v1(10)//有10个元素vector<int> v2{10}//有一个元素,为10vector<int> v3(10,2)原创 2016-07-11 10:53:22 · 471 阅读 · 0 评论 -
指针例题详解
void test2() { char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1= 'a'; } strcpy( string, str1 ); }错误: 链接:https://www.nowcoder.com/questionTerminal/f8209ee66a1b43原创 2017-03-09 21:00:54 · 748 阅读 · 0 评论