
C
文章平均质量分 83
zdaiot
这个作者很懒,什么都没留下…
展开
-
C/C++下的*和&总结.md
c++中的*与&对于初学者来说,确实有点让人搞懵。因为在变量的定义和调用时,*和&都会表现出不一样的含义。* 总结用于定义*在定义时是声明该变量是一个指针,例如int *p; //那p就是一个int型的指针。例1: int a = 0; int *p = a; //那p的值就是a的地址。上面的int a = 0; int *p = a;实际上是int...原创 2018-09-29 00:44:48 · 309 阅读 · 0 评论 -
指针与引用总结
指针若现在指针不知道指向,可以使用NULL,例如int *b = NULL; char *a = NULL;,但是使用的时候若指针指向的是数组或者字符串等,需要提前声明大小。若是int *,则不需要,直接将一个int类型的指针赋值给它即可。c++中的*与&对于初学者来说,确实有点让人搞懵。因为在变量的定义和调用时,*和&都会表现出不一样的含义。* 总结定义一个指针的三种写...原创 2018-10-15 22:58:07 · 5647 阅读 · 2 评论 -
C++ . -> :: 符号含义与区别
.和->的区别结构体首先介绍一下C++中的结构。对于一个结构:struct MyStruct{ int member_a;};如果有个变量MyStruct s,那么使用其中的成员元素时可以用:s.member_a = 1;如果采用指针方法访问,比如MyStruct * ps,那么同样的访问就必须使用如下形式:(*ps).member_a = 1;或者ps-&g...原创 2018-10-15 22:56:30 · 26722 阅读 · 0 评论 -
字符、字符串、字符数组、字符串指针变量
字符和字符串的区别字符如下,定义char,每一个字符一般情况下占用8个字节。char c, ch;字符串例如"helloworld";注意' '和" "的区别,后者为常量字符串在C++中,有两种类型的字符串表示形式:C-风格字符串C++引入的string类C-风格字符串C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用null字符'\...原创 2018-10-15 22:55:17 · 751 阅读 · 1 评论 -
C/C++类型转换
强制类型转换、使用函数转换与memcpy如果一个int型的变量值为5,则若使用强制类型转换或者使用memcpy,则相当于直接copy内存中的值,若打印,则会打印5对应的ASCII值;而若使用函数转换,则函数会操作内存转为ASCII值的5,若打印,则直接为5。memcpy在一定程度上相当于强制类型转换,但是可以制定拷贝的字节大小,因此可能不会出现丢失数据,如大于256的时候,int强制转char...原创 2018-10-15 22:53:34 · 1080 阅读 · 0 评论 -
Cmake详解
什么是 CMakeAll problems in computer science can be solved by another level of indirection.David Wheeler你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着...原创 2018-10-15 22:52:03 · 1602 阅读 · 0 评论 -
gdb调试详解与darknet框架gdb调试过程
准备工作开启core, 采集程序崩溃的状态首先你跟着我做开启core崩溃状态采集. 可以通过ulimit -c查看,如果是0表示没有开启. 开启按照下面操作:sudo gedit /etc/profile在/etc/profile最后一行添加下面几句话设置全局开启 core文件调试,大小不限.# No core files by default 0, unlimited is oou...原创 2018-10-15 22:49:00 · 1410 阅读 · 3 评论 -
C/C++内存管理详解
在计算机系统,特别是嵌入式系统中,内存资源是非常有限的。尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的问题就是如何有效地管理内存资源。本文是作者在学习C语言内存管理的过程中做的一个总结,如有不妥之处,望读者不吝指正。因为不同的编译器和平台,对于内存的管理(段的划分)不尽相同,所以这里以 Linux 为参考总结C语言的内存管理几个基本概念在C语言中,关于内存管理的知识...原创 2018-10-15 22:44:12 · 891 阅读 · 0 评论 -
以darknet源代码为例介绍C/C++项目makefile下的gdb调试过程
darknet源代码是makefile管理的,之前不会在Linux调试大型项目,今天探索了一下,这里介绍一下。准备工作从这里下载源代码修改makefile文件中DEBUG=0改为DEBUG=1进行调试。其中编译选项-O0,意思是不进行编译优化,gdb在默认情况下会使用-O2,会出现print变量中出现<optimized out>。接着编译源代码:make cleanmak...原创 2018-10-09 00:37:19 · 842 阅读 · 1 评论 -
二维数组传参与动态声明详解
二维数组传参基本形式二维数组在栈上分配,各行地址空间连续定义的时候,拥有两种形式第一种是指明行数和列数int array[3][3] = {{1,2,3},{4,5,6},{7,8,9}};第二种是不指明第一维,而指明第二维int array[][3] = {{1,2,3},{4,5,6},{7,8,9}};而在子函数声明的时候,有三种方式一种是指明形参的行数和列数int ...原创 2018-10-15 22:59:09 · 534 阅读 · 0 评论