memcpy与strcpy的区别:
memcpy
void * memcpy ( void * destination, const void * source, size_t num );
The function does not check for any terminating null character in source - it always copies exactly num bytes.
该方法只会从source拷贝num个字符到destination,不会检查结束符,所以有时候打印destination会带一个@
strcpy
char * strcpy ( char * destination, const char * source );
Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).
该方法会检查结束符
const修饰指针的几种情形
1.常量指针
const 类型 * 指针名 等价于 类型 const * 指针名
const int *p1=&a //不可以用*p改变a的值
int a=10; int b=3;
*p1=11 //错误,因为p1指向的内容是a的值10,此处*p1=11相当于修改a的值错误,但是a=11确实可以的
p=&b; //正确 指针指向的内容不可变,但是指针p1可以指向其他位置
2.指针常量
类型 * const 指针名
int * const p1 = &a
p1=&a //正确 指针指向a地址
*p1=5 //正确 指针指向的内容可以被改变,即可以通过*p1去修改a的值
p1=&b //错误 ,指针的位置再也不能变。
3.指向类型常量的常量指针
const 类型 * const 指针名
const int * const p1 = &a //p指向的内存单元,和p指向内存单元中存放的内容都是不可变的
const修饰函数
1.放在后面:
A.不可以修改任何数据成员,即函数体内的任何数据成员不可修改;
B.不可以调用本对象的非const修饰的方法,即只能调用同样const放在最后申明的函数;
C.成员函数是const类型的,如果要求返回值是类的成员变量,那么该成员变量不能是非cosnt或者非mutable成员变量,如果返回的是临时变量则没有此限制;
int AClass::getNum() const { //函数体内不能修改任何成员变量的值,不然报错 num += 1; // #Error...error C2166: l-value specifies const object # return num; }
2.放在前面修饰函数的返回值
如果给以“指针传递”方式的函数返回值加const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
函数:const char * GetString(void);
错误使用:char *str = GetString();
正确使用:const char *str = GetString();
注意:如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。int GetInt(void) 不需要加const
__builtin_return_address(LEVEL)函数解释
1、__builtin_return_address(0)的含义是,得到当前函数执行完成后需要返回到地址,此函数被别的函数调用,然后此函数执行完毕后,需要回到的地方,即当前函数退出后,回到调用它的函数的下一行代码的位置;
2、__builtin_return_address(1)的含义是,得到当前函数的调用者要返回到的地址。注意是调用者要返回到的地址,不是当前函数需要返回到调用者的下一行代码地址。
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void level3() { printf("%s(0): %p\n", __func__, __builtin_return_address(0)); printf("%s(1): %p\n", __func__, __builtin_return_address(1)); } int level2() { printf("%s(0): %p\n", __func__, __builtin_return_address(0)); printf("%s(1): %p\n", __func__, __builtin_return_address(1)); level3(); return 2;//addr=0x4005d0 } int level1(int temp) { temp += 1; printf("%s(0): %p\n", __func__, __builtin_return_address(0)); level2(); return temp;//addr=0x400606 } int main() { level1(123); return 0;//addr=0x400619 }执行结果如下:
相关推荐
对于C++的初学者而言 总是有一些知识点让人感觉混淆不清 而此文档或许对你有些帮助
网上搜集的,个人认为比较经典(作者:用了几年java 了,突然想学习c++ ,昨天用了一天的时间疯狂的学习了一天c++ 基础知识,发现感觉还不错,不过精验告诉我,学编程语言一定要实践,在这里指记录了一些学习中的点滴...
这个笔记呢,本人学习C++过程当中记录的笔记,知识点很散很难整合,所以一个行之有效的笔记是很好的参考物。【这是笔记(一),笔记(二)会随后传上】当然如果有了很多的经验的牛人大神们就不要参考了,但是C++ 是...
个人在学习C++ primer plus这本书时所做的笔记,主要记录了c++中比较重要和难的知识点,并不适合完全不懂C++的,适合了解C++并用此回顾知识点的同学
无忧全国计算机等级考试2019年9月版是最新版本的考试模拟软件, ...•学习讲义:不定时更新考试技巧和知识点汇总,以供参考 下载中心-无忧考吧(官网) http://ncre.wyk8.com/Category_25/Index.aspx
此为个人学习c+编程学习时笔记,记录了个人学习c++过程中的问题和好的方法,知识点
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
" "数 " " " "周一:明确设计任务,学习相关基础知识 " "进 "周二:熟悉各知识点,进行基础练习 " "度 "周三:根据题目要求,进行设计和实现 " "要 "周四:根据题目要求,进行设计和实现 " "求 "周五:程序测试 " ...
·使用visual c++ 2010支持的两种c++语言技术讲述c++编程的基础知识 ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素 ·举例说明如何使用mfc开发本地windows...
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
如 果你会一点C、C++语言,你就可以学习游戏编程了,开发真正的游戏!如果你学过一点C++更好,没学过也没关系。本课程教你从零基础开始开发7个完整的 游戏:Brainiac、Light Cycles、Henway、Battle Office、Meteor ...
本书系编程语言先驱者Ivor Horton的经典之作,是学习C++编程最畅销的图书品种之一,不仅涵盖了Visual C++ .NET编程知识,还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,...
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的...
在过程中遇到了各种领域的问题,硬件支持,系统兼容,软件迭代等等,但是个人觉得这些都是一些外在的,比较容易解决的问题,但是在学习ROS的过程中,发现了许多之前遗漏的知识点掌握不全面导致的各种问题,甚至出现...
Cpp程序设计知识点集合 重读cpp Primer,并且将代码实现的过程 Cpp面试题精讲 :Japanese_secret_button_selector: 主要收集各大面试题,并且写出了自己的理解。 Cpp入门与TCPL部分 对Cpp Primer的学习笔记以及部分...