加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

如何将Vim打造成C/C++的半自动化IDE

发布时间:2016-10-12 19:09:50 所属栏目:Linux 来源:网络整理
导读:C语言在Linux系统中的重要性自然是无与伦比、不可替代,所以我写Linux江湖系列不可能不提C语言。C语言是我的启蒙语言,感谢C语言带领我进入了程序世界。虽然现

这段代码的运行结果为:

The size of arr in main: 400
The size of arr in function: 8

感悟三:C语言中的不完全类型(Incomplete Types)

在GNU C中可以定义不完全类型,不完全类型主要有两种,一种是空的结构,一种是空的数组,比如:

struct point;
char name[0];

本栏目更多精彩内容:http://www.bianceng.cn/OS/Linux/

空的结构不能定义变量,只能使用空结构的指针。空结构可以在后面再将它补充完整,如下:

struct point{
    int x,y;
};

空结构在定义链表的时候经常用到,如下:

struct linked_list{
    struct linked_list* next;
    int x;
    /*other elements here perhaps */
}
struct linked_list* head;

还有一种不完全类型就是将一个结构的最后一项定义为一个空的数组,这样可以用来表示一个可变长度的结构或数组,演示该技术的代码如下:

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 
 4 typedef struct {
 5     int length;
 6     int arr[0];
 7 } incomplete_type;
 8 
 9 int main(){
10     char hello[] = "Hello, world!";
11     int length = sizeof(hello) / sizeof(char);
12     incomplete_type* p = (incomplete_type*)malloc(sizeof(int) + length*sizeof(char));
13     p->length = length;
14     for(int i=0; i<p->length; i++){
15         p->arr[i] = hello[i];
16     }
17     printf("p->length=%dn", p->length);
18     printf("p->arr=%sn", p->arr);
19 }

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读