一、简介

变长数组又成c99 柔性数组,是非标准的拓展

形如:

struct test {char p[];
};
或者 struct {char p[0];
};

在实际的物理上是没有占用字节的。目的是为了方便的动态增加内存长度,比如你要保存一个字符串,事先不知道字符串长度,可以采用此类方法动态分配。对于该变量的类型 可以随意,比如int、long 等。

二、各平台的比较

代码如下:

struct test{char p[];
};
int main()
{struct test ls;printf ("%d %d \n", sizeof(ls), sizeof(ls.p));
}

windows输出结果为:

linux 输入的结果为: 0,0

总结:可变变量不占字节。

注意点:

1. 在使用可变变量时候 要记得malloc( + 特定需要的长度(如: strlen("123")))

2. windows 在进行malloc 时候如果不增加长度。进行 free 时候就会报错。提示broken 块值。linux不会报错

3.  形如: 大小为 4 ;p 仍然为0

struct test{int a;char p[];
};

4. 可变数组只能放在结构体末尾

5. 仅在 结构体中、extern、形参才能用【】。其他的要指明大小

6. char p[1] 值大小为 1.

c语言提高-----可变数组相关推荐

  1. 一看就懂-【c语言】可变数组的实现与缺陷分析

    目录 0.引言 1.完整代码 2.可变数组的创造 3.可变数组的长度 4.可变数组的写入 5.可变数组的增长 6.可变数组的自动增长 7.可变数组的缺陷 7.1 效率极低 7.2 浪费内存空间 8.总 ...

  2. 计算payload长度c语言,C语言0长度数组(可变数组/柔性数组)详解

    1 零长度数组概念 众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展. 多数情况下, 其应 ...

  3. C语言学习笔记10-指针(动态内存分配malloc/calloc、realloc、释放free,可变数组实现;Tips:返回指针的函数使用本地变量有风险!;最后:函数指针)

    C语言:指针 1. 指针:保存地址的变量 *p (pointer) ,这种变量的值是内存的地址.   取地址符& 只用于获取变量(有地址的东西)的地址:scanf函数-取地址符   地址的大小 ...

  4. C语言0长度数组(可变数组/柔性数组)详解

    CSDN GitHub C语言0长度数组(可变数组/柔性数组)详解 AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 ...

  5. c语言学习之可变数组

    今天学习了中国大学mooc上翁恺老师<C语言程序设计>的第14课链表.在学习链表之前,老师讲解了普通的可变数组的实现. 前奏:可变数组的实现(有缺陷) 首先定义一个结构体,内部存在一个指针 ...

  6. c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看a,a[0],a之间的值,可变数组

    1.查看一个c函数依赖的类的方式: gcc t.c -o app 使用ldd app命令查看依赖的类,截图如下: 2.库函数包括: a.C标准库函数,(c89/c99标准定义的函数接口,由操作系统厂商 ...

  7. oracle数组元素所在key,oracle可变数组(VARRAY)

    一.可变数组的定义: 可变数组与嵌套表相似,也是一种集合.一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型.可变数组的大小由创建时决定.在表中建立可变数组后,可变数组在主表中作为一个列对 ...

  8. 嵌入式编程C语言提高代码效率的14种方法

    嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...

  9. c语言中指,浅析C语言中指与数组.doc

    浅析C语言中指与数组 浅析C语言中的指针与数组 指针是C语言中的精华,正确灵活的应用指针,能动态的分配内存,有效的表示复杂的数据结构,方便的使用数组. 指针极大丰富了C语言的功能.指针就是地址,指针变 ...

最新文章

  1. 详解JVM内存管理与垃圾回收机制3 - JVM中对象的内存布局
  2. android方法中添加 N,Android N 新功能 - 添加快速设定
  3. 【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
  4. 员工培训案例分析答案_培训主管的技巧:培训教材问题解析、培训实施分析报告(附案例)...
  5. silverlight旋转中心很好玩
  6. java的json导出excel_利用json生成excel表格
  7. 容器安全最佳实践入门
  8. telnet不能用,提示:-bash: telnet: command not found
  9. 136.只出现一次的数字
  10. Serverless 架构就不要服务器了?
  11. iOS12+Xcode 10 Error: Multiple commands producei
  12. java web传递参数_Javaweb的八种传值方式
  13. C# 利用卫星星历计算卫星位置
  14. Jetson AGX Xavier 固态硬盘安装并挂载到/home与无线模块安装
  15. 微博热搜数据变化趋势视频化展示
  16. 13.2-“制作一款私有IAP串口下载小工具”之串口IAP的通信协议设计
  17. 什么是软件测试?零基础入门知识要点总结篇,5分钟带你快速了解
  18. 无胁科技-TVD每日漏洞情报-2022-12-14
  19. 坦克世界WOT圣诞碎片抽箱子活动最优策略
  20. C++ 内存泄露和检测

热门文章

  1. 计算机考试检讨书300字,大学生计算机考试不及格检讨书
  2. Linux机器插上显示器无反应,台式电脑开机后显示屏无反应,但主机正常启动怎么解决?...
  3. JAVA解析xml的五种方式比较
  4. 易流科技董事长张景涛接受中国食品安全网专访
  5. dubbo负载算法之加权轮询算法
  6. qrcode生成二维码并本地下载
  7. RSA2048与RSA3072的闲言碎语
  8. 计算机毕业设计ssm软件项目Bug管理系统612ed系统+程序+源码+lw+远程部署
  9. 主存与cache间的地址映射
  10. 基于NodeJS的视频网站爬虫工具