Linux C/C++编程笔记

前言

记录工作学习中遇到一些C/C++编程技巧,目前还在不断完善中。。

1、 C语言宏定义中#符号和##的妙用

  • #运算符用在预编译时期,用于将宏参数转换为字符串,即是加上双引号。
  • ##运算符用于在预编译期粘连两个符号,增大了宏的使用灵活性!

参考:C语言宏定义中#符号和##的妙用

2、变长结构体

当结构体中含有字符指针时,使用边长结构体可以方便申请/释放内存。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdlib.h>

#define PATH_LENG 10

struct Stu {
    int a;
    char name[1]; 
};

int main(int argc, char **argv) {
    int len = strlen(name);
    struct Stu *stu = (struct Stu*)malloc(sizeof(struct Stu) + 9);
    char *name = "123456789";
    memcpy(stu->name, name, sizeof(name));
    printf("%s %d\n", stu->name, sizeof(name));
    return;

C语言:变长结构体

相关推荐

  1. LinuxC 鼠标应用编程 input_event

    2024-03-11 21:50:06       12 阅读
  2. linux 驱动编程笔记

    2024-03-11 21:50:06       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 21:50:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 21:50:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 21:50:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 21:50:06       20 阅读

热门阅读

  1. SpringBoot 线程池异步调用

    2024-03-11 21:50:06       21 阅读
  2. 排序的学习(一)

    2024-03-11 21:50:06       20 阅读
  3. zsh: command not found: mongo(mac版已解决)

    2024-03-11 21:50:06       21 阅读
  4. 二叉排序树(非递归15.5)

    2024-03-11 21:50:06       18 阅读
  5. 微信小程序开发常用的布局

    2024-03-11 21:50:06       20 阅读
  6. c#空闲中断接收

    2024-03-11 21:50:06       20 阅读
  7. 理论学习 消融实验

    2024-03-11 21:50:06       26 阅读
  8. 自定义注解【项目篇】

    2024-03-11 21:50:06       19 阅读
  9. 行为型模式

    2024-03-11 21:50:06       19 阅读