柔性数组
在C99标准之后,在结构体中最后一个元素允许是未知大小的,称之为柔性数组
- 一般定义为:
- 类型 变量名[]
- 注意:
- 结构体中,柔性数组前必须有变量
- 柔性数组必须定义在结构体的最后
- 示例:
struct CoolArr_s{
int len;
char arr[];
};
- -
- 如果编译器报错,则考虑把最后的 char arr[] 尝试替换为一下几种写法:
- char arr[0]
- char arr[1] (非常不推荐,如果这样声明后使用时会被认为是越界行为)
- 如果编译器报错,则考虑把最后的 char arr[] 尝试替换为一下几种写法:
- 使用 malloc(sizeof(int) + sizeof(char) * 长度) 申请内存空间
- 示例:
#include "stdio.h"
#include "stdlib.h"
struct CoolArr_s
{
int len;
char arr[];
};
int main()
{
//这里给arr的长度为10个char的大小
struct CoolArr_s* p = (struct CoolArr_s*)malloc(sizeof(int) + sizeof(char) * 10);
for (int i = 10; i--;)
{
(p->arr)[i] = i + '0';
printf("%d " ,(p->arr)[i]);
}
printf("\n CoolArr_s: %d, *p: %d\n", sizeof(struct CoolArr_s), sizeof(*p));
return 0;
}
- 运行结果:
- 那么这和直接把它定义为指针有什么区别呢?或者说它有什么好处呢?
- 首先从上面的例子的运行结果可见,结构体 CoolArr_s 的大小就是 int len 的大小。也就是说,柔性数组 char arr[] 并不会占一个指针的大小。数组名 arr 是一个常量地址,这个地址是紧接着 int len 的后面的地址。(数组名和指针是不同的)
- 其次就是柔性数组的内存空间是和结构体连续的,而声明为指针时,其指向的数组内存空间和结构体极大概率不是连续的。这一点在给一些函数传值时是非常重要的区别,比如 linux中的消息队列 相关的函数。
在C++中的柔性数组
注意:在c++中并不建议使用柔性数组,而应考虑使用array代替。即使它可以使用在struct和class中,但部分编译器是不支持这种操作的。
- 截止至2022(C++20标准):
- 在g++中是可以使用柔性数组的
- 在VS2022的MSVC中使用柔性数组,虽然可以运行,但会有警告:
- warning C4200: 使用了非标准扩展: 结构/联合中的零大小数组
- warning C6011: 取消对 NULL 指针 “xxx” 的引用
- 所以在c++中应考虑使用array容器代替。
- 示例(使用array容器代替上面的例子):
#include <iostream>
#include <array>
using namespace std;
int main()
{
//数组长度
const int len_arr = 10;
//定义数组
array<int, len_arr> arr;
//array::data()返回数组的首地址
//array::begin()返回的是迭代器iterator
int *arr_p = arr.data();
for (int i = len_arr; i--;)
{
arr_p[i] = i;
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
Покердом обзор
Покердом обзор
Покердом обзор
Покердом ВЫВОД ДЕНЕЖНЫХ СРЕДСТВ
Покердом ВЫВОД ДЕНЕЖНЫХ СРЕДСТВ
Покердом ВЫВОД ДЕНЕЖНЫХ СРЕДСТВ
покердом установить приложение
покердом установить приложение
покердом установить приложение
обзор покердом
https://t.me/s/pokerdom_obzori
обзор покердом
рабочее зеркало покердом
рабочее зеркало покердом
рабочее зеркало покердом
Вывод денег из ПокерДома
https://t.me/s/pokerdom_s_vivodom
Вывод денег из ПокерДома
покердом рабочее зеркало сегодня
https://t.me/s/pokerdom_working_mirror_today
покердом рабочее зеркало сегодня
покердом зеркало 2023
покердом зеркало 2023
покердом зеркало 2023
покердом играть в браузере
https://t.me/s/pokerdom_vbrauzere
покердом играть в браузере
покердом зеркало войти
https://t.me/s/pokerdom_zerkalo_vojti
покердом зеркало войти
Покердом телеграм
https://t.me/s/pokerdom_telegram1
Покердом телеграм
Покердом верификация
Покердом верификация
Покердом верификация
промокод покердом 2022
промокод покердом 2022
промокод покердом 2022
покердом скачать
покердом скачать
покердом скачать
сайт покердом
сайт покердом
сайт покердом
промокод покердом покер
промокод покердом покер
промокод покердом покер
промокод для покердом
https://t.me/s/promokod_dlya_pokerdom
промокод для покердом
покердом играть онлайн на деньги
https://t.me/s/Poker_Speculum
покердом играть онлайн на деньги
ПокерДом Регистрация
ПокерДом Регистрация
ПокерДом Регистрация
промокоды покердом
промокоды покердом
промокоды покердом
Быстромонтируемые строения – это актуальные конструкции, которые различаются великолепной быстротой установки и мобильностью. Они представляют собой сооружения, образующиеся из эскизно изготовленных деталей либо компонентов, которые способны быть скоро собраны в участке стройки.
Быстровозводимые здания из металлоконструкций под ключ владеют податливостью также адаптируемостью, что позволяет легко менять и модифицировать их в соответствии с нуждами заказчика. Это экономически успешное и экологически надежное решение, которое в крайние годы приобрело маштабное распространение.
Покердом Рейкбек
Покердом Рейкбек
Покердом Рейкбек
Приложение покердом
Приложение покердом
Приложение покердом
зеркало покердом на деньги
зеркало покердом на деньги
зеркало покердом на деньги
скачать клиент покердом на андроид
скачать клиент покердом на андроид
скачать клиент покердом на андроид
mexican drugstore online: mexican online pharmacies prescription drugs – mexico pharmacies prescription drugs
Быстровозводимые строения – это прогрессивные системы, которые отличаются повышенной скоростью возведения и мобильностью. Они представляют собой постройки, заключающиеся из предварительно произведенных элементов либо узлов, которые способны быть скоро смонтированы в месте застройки.
Строительство из сэндвич панелей под ключ отличаются податливостью также адаптируемостью, что дает возможность легко менять а также адаптировать их в соответствии с запросами покупателя. Это экономически выгодное и экологически стабильное решение, которое в крайние лета приняло обширное распространение.
Быстромонтируемые здания – это прогрессивные сооружения, которые отличаются громадной быстротой возведения и мобильностью. Они представляют собой постройки, заключающиеся из эскизно произведенных деталей или же блоков, которые имеют возможность быть быстрыми темпами установлены в районе застройки.
Здание из сэндвич панелей под ключ обладают податливостью а также адаптируемостью, что позволяет легко преобразовывать и трансформировать их в соответствии с запросами покупателя. Это экономически выгодное и экологически стабильное решение, которое в крайние лета получило маштабное распространение.
скачать покердом на android
скачать покердом на android
скачать покердом на android
РейкБек ПокерДом
https://t.me/s/reikber_pokerdom
РейкБек ПокерДом
слоты покердом
слоты покердом
слоты покердом
Быстромонтируемые здания – это прогрессивные системы, которые отличаются повышенной скоростью установки и мобильностью. Они представляют собой сооруженные объекты, состоящие из предварительно изготовленных компонентов или блоков, которые могут быть быстро смонтированы на территории застройки.
Строительство быстровозводимых сооружений располагают гибкостью также адаптируемостью, что позволяет просто менять а также модифицировать их в соответствии с запросами покупателя. Это экономически выгодное а также экологически надежное решение, которое в крайние лета заполучило широкое распространение.
Быстровозводимые строения – это современные конструкции, которые отличаются повышенной быстротой строительства и гибкостью. Они представляют собой строения, заключающиеся из предварительно сделанных деталей или же модулей, которые имеют возможность быть скоро установлены в пункте строительства.
Строительство быстровозводимых зданий из металлоконструкций под ключ отличаются гибкостью а также адаптируемостью, что дает возможность легко преобразовывать а также трансформировать их в соответствии с запросами клиента. Это экономически выгодное а также экологически долговечное решение, которое в последние годы заполучило обширное распространение.
Быстровозводимые здания – это новейшие сооружения, которые отличаются высокой скоростью строительства и гибкостью. Они представляют собой сооружения, заключающиеся из заранее созданных компонентов или модулей, которые способны быть быстрыми темпами установлены на территории развития.
Металлокаркас здания из сэндвич панелей владеют гибкостью также адаптируемостью, что разрешает легко менять и модифицировать их в соответствии с пожеланиями заказчика. Это экономически эффективное и экологически стойкое решение, которое в последние годы получило обширное распространение.
Покердом в россии
Покердом в россии
Покердом в россии
Фриролл ПОКЕРДОМ
https://t.me/s/th_freeroll_pokerdom
Фриролл ПОКЕРДОМ
Быстромонтируемые строения – это актуальные конструкции, которые различаются громадной быстротой установки и гибкостью. Они представляют собой строения, состоящие из заранее произведенных элементов либо блоков, которые имеют возможность быть скоро собраны на районе стройки.
Монтаж быстровозводимых зданий из сэндвич панелей отличаются гибкостью и адаптируемостью, что дозволяет легко преобразовывать и модифицировать их в соответствии с нуждами покупателя. Это экономически лучшее и экологически устойчивое решение, которое в крайние лета получило маштабное распространение.
ПокерДом ВОЙТИ СЕЙЧАС
https://t.me/s/vhod_pokerdom_tut
ПокерДом ВОЙТИ СЕЙЧАС
бонус код покердом
https://t.me/s/voyti_pokerdom
бонус код покердом
Быстромонтируемые здания – это современные сооружения, которые отличаются великолепной быстротой строительства и мобильностью. Они представляют собой сооруженные объекты, образующиеся из предварительно сделанных составных частей либо модулей, которые имеют возможность быть скоро собраны в районе развития.
Проект быстровозводимого здания обладают гибкостью также адаптируемостью, что разрешает просто менять а также модифицировать их в соответствии с интересами покупателя. Это экономически эффективное а также экологически стойкое решение, которое в крайние годы получило обширное распространение.
canadian pharmacy india: Online pharmacy India – mail order pharmacy india
Быстромонтируемые строения – это новейшие сооружения, которые отличаются повышенной быстротой возведения и мобильностью. Они представляют собой строения, образующиеся из эскизно сделанных составных частей или модулей, которые имеют возможность быть быстрыми темпами смонтированы в территории строительства.
Монтаж быстровозводимых зданий из сэндвич панелей владеют податливостью и адаптируемостью, что разрешает просто менять и трансформировать их в соответствии с пожеланиями заказчика. Это экономически продуктивное и экологически устойчивое решение, которое в крайние годы приобрело маштабное распространение.
Быстромонтируемые здания – это новейшие системы, которые различаются большой скоростью установки и мобильностью. Они представляют собой сооруженные объекты, заключающиеся из предварительно изготовленных компонентов или блоков, которые имеют возможность быть быстрыми темпами собраны на территории развития.
Металлокаркас здания из сэндвич панелей располагают податливостью также адаптируемостью, что дозволяет просто изменять и переделывать их в соответствии с нуждами заказчика. Это экономически результативное а также экологически устойчивое решение, которое в последние годы приобрело широкое распространение.
Быстромонтируемые строения – это современные строения, которые различаются громадной быстротой строительства и мобильностью. Они представляют собой здания, заключающиеся из эскизно произведенных составных частей или же компонентов, которые имеют возможность быть быстро установлены на пункте стройки.
Здание из металлоконструкций и сендвичные панели отличаются податливостью также адаптируемостью, что дозволяет легко изменять а также трансформировать их в соответствии с пожеланиями покупателя. Это экономически лучшее а также экологически долговечное решение, которое в крайние годы заполучило широкое распространение.
Быстромонтируемые строения – это новейшие системы, которые различаются высокой быстротой строительства и мобильностью. Они представляют собой постройки, заключающиеся из заранее сделанных компонентов или блоков, которые имеют возможность быть быстрыми темпами собраны в районе строительства.
Строительство быстровозводимых зданий и сооружений владеют гибкостью а также адаптируемостью, что дает возможность просто менять и переделывать их в соответствии с нуждами покупателя. Это экономически продуктивное а также экологически устойчивое решение, которое в последние лета приняло обширное распространение.
canada pharmacy: Certified Canada Pharmacy Online – canadian pharmacy 24h com
medicine in mexico pharmacies: buying from online mexican pharmacy – best online pharmacies in mexico
india pharmacy mail order: Online medication home delivery – reputable indian pharmacies
Быстровозводимые здания – это новейшие строения, которые отличаются высокой скоростью строительства и мобильностью. Они представляют собой сооружения, образующиеся из эскизно изготовленных компонентов либо узлов, которые имеют возможность быть быстрыми темпами смонтированы в месте развития.
Быстровозводимые каркасные здания отличаются податливостью также адаптируемостью, что дозволяет просто преобразовывать и адаптировать их в соответствии с интересами покупателя. Это экономически лучшее и экологически стабильное решение, которое в последние лета получило обширное распространение.
Быстровозводимые строения – это актуальные системы, которые отличаются высокой скоростью установки и гибкостью. Они представляют собой строения, состоящие из заранее выделанных составных частей или блоков, которые способны быть быстро собраны в участке стройки.
Расчет ангара из металлоконструкций калькулятор отличаются гибкостью а также адаптируемостью, что разрешает просто изменять и переделывать их в соответствии с запросами покупателя. Это экономически продуктивное а также экологически стойкое решение, которое в последние лета получило широкое распространение.