MENU

分类 摸爬滚打 C++ 之路 下的文章

C++之函数指针&指针函数

指针函数

  • 指针函数:返回值是指针的函数。
# 形式如下
类型名 *函数名(函数参数列表)

# 示例代码
// 由于“*”的优先级低于“()”的优先级,因而swap首先和后面的“()”结合,也就意味着,swap是一个函数 char *swap(char *a, char *b) 等价于 char *(swap(char *a, char *b)) 
// 返回值是一个指针地址。

#include <stdio.h>
char *swap(char *a, char *b){
    b = a;
    return b;
}

int main(int argc, char *argv[]) {
    char a[10] = "hello";
    char b[10] = "world";
    printf("%s", swap(a, b));
    return 0;
}

阅读全文

makefile文件编写技巧

前言

之前用C++写的都是一些小小几个文件,所以直接使用gcc/g++直接编译文件。但是最近做一个webserver项目,涉及到头文件且多个文件存在有依赖关系,因此使用makefile编译变得更方便。
编译过程为:源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。也即编译+链接过程。

makefile

makefile编写按照如下格式

target ... : requisites ...  目标 : 依赖
    command                     命令(注意命令必须要以Tab键开始)

大致执行过程:①先在目录中找到makefile或Makefile文件 ②在makefile文件中找到第一个目标target做为最终生成目标文件 ③判断最终目标文件是否存在,不存在最终目标文件或者.o的依赖文件更新时间比最终目标文件新,则重新执行编译生成最终目标文件

阅读全文

Linux下C++文件判断方式

前言

开发webserver中涉及到其中的读取文件,做一个静态webserver常常需要都文件,比如HTML文件、CSS文件、图片资源等。竟然用过就当在记录整理一下。

详细说明

主要涉及到stat()函数、struct stat结构体、S_ISDIR宏及S_ISREG宏。

阅读全文

字节序的理解

前言

最近一直在看《深入理解计算机系统》补充基础知识,看到有关介绍大端小端的介绍,下面就做个总结。

详细

  • 大端:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。(符合我们平时的读写字符数值)
  • 小端:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。

举例:如数组0x2356,高位为:0x23 低位为:0x56,在内存的存放如下。

内存地址 小端模式 大端模式
0x5000 0x56 0x23
0x5001 0x23 0x56

阅读全文

C++内存对齐

字节对齐:计算机中内存大小的基本单位是字节(byte),理论上讲,可以从任意地址访问某种基本数据类型,但实际的计算机系统对基本类型数据在内存中存放的位置有限制,即它的地址必须是2、4、8、16等倍数,则就要求各种数据类型按照一定的规则在空间上排序,这就是对齐。

阅读全文