
c/c++
c/c++
弋阳yoga
这个作者很懒,什么都没留下…
展开
-
C语言 !!的含义
原地址https://blog.csdn.net/chenmoshashou2/article/details/80757300C语言中偶尔会遇到 !!(cond),特别是在宏定义当中一个感叹号!我们知道是取非!(非零)=0!(零)=1两个感叹号由此推导可以知道:!!(非零)=1!!(零)=0...转载 2020-06-29 16:39:57 · 4829 阅读 · 0 评论 -
c语言 struct结构体大小计算方法
struct结构体大小的计算方法1)第一个成员处在偏移地址0的地方2)#include <stdio.h>#pragma pack(4)struct Test1{ //对齐参数 偏移地址 大小 char c1;//1 0 1 short s; //2 2 2 char c2;//1 4 1 int i; //4原创 2020-06-03 15:31:11 · 3475 阅读 · 0 评论 -
c 指针阅读技巧-右左法则
右左法则:1)从最里层圆括号中未定义的标识符看起2)首先往右看,再往左看3)遇到圆括号或方括号时可以确定部分类型,并调转方向4)重复2,3步骤直到阅读结束下面是一些例子 int (*p1)(int*, int (*f)(int*)); int (*p2[5])(int*); int (*(*p3)[5])(int*); int*(*(*p4)(int*))(int*); int (*(*p5)(int*))[5]原创 2020-05-16 20:56:55 · 326 阅读 · 0 评论 -
C 二维数组的动态申请
二维数组实际上可以看做是每个数组元素的数据类型为一维数组的数组。同时二维数组的内存空间中存储也是连续的。如下图所示:所以我们在进行动态申请需要注意的就是,保留二维数组数据存储区域是连续的特性。代码如下:#include <stdio.h>#include <malloc.h>int** malloc2d(int row, int col){ int** ret = NULL; if((row > 0)&&(c原创 2020-05-09 18:44:19 · 785 阅读 · 0 评论 -
关于lds文件中段名在c文件中的使用
//链接脚本SECTIONS{ . = 0x33f80000; /*代码段起始地址*/ .text : { start.o (.text) *(.text) } /*代码段*/ . = ALIGN(4); /*下一段的起始地址向4取整...原创 2020-03-01 15:27:32 · 333 阅读 · 0 评论 -
c语言 数组与指针的异同
数组和指针的区别指针 数组 保存数据的地址 保存数据 间接访问数据,首先取得指针的内容,把它作为地址,然后从这个地址提取数据。 如果指针有一个下标[i],就把指针的内容加上i作为地址,从中提取数据。 直接访问数据,a[i]只是简单的以a+i为地址取得数据。 通常用于动态数据结构 通常用于存储固定数目且数据类型相同的元素。 相关的函...原创 2020-05-04 20:44:18 · 241 阅读 · 0 评论 -
使用宏定义的方式使printf打印代码所处位置
使用以下宏就可以做到#define DBG_PRINTF(fmt,...) printf("%s[%d]:"fmt,__FILE__,__LINE__,##__VA_ARGS__)这样可以加快应用程序调试时找到错误的速度原创 2019-08-09 23:38:42 · 475 阅读 · 0 评论 -
C语言编译过程详解
日前正在学习c语言程序编译的过程,在网上看到这篇文章写的很好,就转载过来了原地址:https://www.cnblogs.com/CarpenterLee/p/5994681.html 作者:CarpenterLee前言C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程。编写hello world C程序:...转载 2019-04-23 14:29:04 · 173 阅读 · 0 评论 -
c语言学习-双向链表与单向链表的实现
双向链表双向链表的删除操作反而简单一点,可以查找需要删除的节点,然后得到其前一节点与后一节点,然后将前节点的next指向后一节点,后一节点的pre指向前一节点即可完成,其他地方也没有太大的差异。以下双向链表的源码#include <stdio.h>#include <stdlib.h>#include <string.h>typedef...原创 2019-04-17 20:52:51 · 387 阅读 · 0 评论 -
c语言 堆排序
目的实现一个自增有序ID分配机制:每次申请的id从低向高递增,删除之后的id回到堆中重新进行分配,每个id都唯一且不重复。定义堆(heap):这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质:[性质一] 堆中任意节点的值总是不大于(不小于)其子节点的值;[性质二] 堆总是一棵完全树。将任意节点不大于其子节点的堆叫做最小堆或小...原创 2019-01-15 17:08:21 · 234 阅读 · 0 评论 -
c++ static_cast类型转换
1、用于基本类型的转换,不能用于基本类型指针间的转换2、用于有继承关系类对象之间的转换和类指针之间的转换3、用于使用explict修饰的构造函数原创 2020-05-05 10:20:19 · 1692 阅读 · 0 评论 -
c/c++ 不同类型数据运算时的隐式转换规则
在c/c++中不同类型数据运算时会隐式的转化到更大数据类型进行运算,所以有时运行结果很令人费解。#include <iostream>#include <string>using namespace std;int main(){ short s = 'a'; unsigned int ui = 1000; int i = -2000; dou...原创 2020-05-04 15:04:51 · 662 阅读 · 0 评论 -
C++ 局部对象作为返回值的情况
代码如下:#include <iostream>using namespace std;class Test{ int mValue;public: Test(int i) { mValue = i; cout << "Test(int i) i = " << i << endl; } Test(const Tes...原创 2020-04-30 13:39:44 · 1036 阅读 · 1 评论 -
C++ 逗号操作符的含义以及重载
逗号操作符(,)在c\c++中的原生语义:1)逗号表达式用于将多个子表达式连接为一个表达式2)逗号表达式的值为最后一个子表达式的值3)逗号表达式的前N-1个子表达式可以没有返回值4)逗号表达式按照从左到右的顺序计算每个子表达式的值例子:#include <iostream>#include <string>using namespace st...原创 2020-04-28 15:16:45 · 769 阅读 · 0 评论 -
C++面试题 以指定字符为界翻转两边的字符串
题目:#include <iostream>#include <string>#include<algorithm>using namespace std;string reverse(const string& s, const char c){ string ret = ""; unsigned int Foundi...原创 2020-04-24 15:41:20 · 229 阅读 · 0 评论