柔性数组
在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;
}
смотреть порно с гимнастками смотреть порно с гимнастками .
Здравствуйте!
Купить документ о получении высшего образования можно у нас в Москве.
ast-diploms24.ru/kupit-diplom-voronezh
Успехов в учебе!
Glory Casino
幫助
buy cipro online: cipro online no prescription in the usa – where can i buy cipro online
её‚ењє
е®ѓ
Привет, друзья!
Официальное получение диплома техникума с упрощенным обучением в Москве
vk.com/club52212509?w=wall-52212509_11501
Рады оказать помощь!.
е›ћз”
порно гимнастки порно гимнастки .
Привет!
Приобрести диплом университета.
livestockkenya.com/index.php/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=244
Привет!
Приобрести диплом любого университета.
startspresto.ru/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=145
Добрый день!
Мы изготавливаем дипломы любой профессии по приятным ценам.
http://www.ldkladno.cz/test/2024/06/30/диплом-специалиста-2011-2013-видео/
Здравствуйте!
Узнайте, как безопасно купить диплом о высшем образовании
landik-diploms-srednee.ru/svidetelstvo-o-razvode В
Привет!
Узнайте, как безопасно купить диплом о высшем образовании
landik-diploms-srednee.ru/diplom-s-reestromkupit-kupit В
משתמשים על מנת לתאר את החוויה. אך נראה כי שום מילה לא יכולה לתאר את החוויה בצורה מדויקת. בשביל להבין צריך לנסות. ואם אתה רוצה את החלומות. דירות דיסקרטיות בבאר שבע לגבר שמעז ליהנות מהחיים זו לא תוצאה של נסיבות, זו תוצאה של החלטה. בשביל שגבר ייהנה דירות דיסקרטיות בחיפה
порно ролики гимнастки http://sexygimnastky.ru .
смотреть порно гимнастки онлайн http://sexygimnastky.ru .
Привет, друзья!
Заказать документ ВУЗа
ast-diploms24.ru/kupit-diplom-ekaterinbur
порно с красивой гимнасткой http://sexygimnastky.ru/ .
Привет!
Заказать документ института
asxdiplomik24.ru/kupit-diplom-nizhnij-novgorod
е®іжЂ•зљ„
Привет!
Купить документ университета вы сможете в нашей компании в столице.
ast-diplom24.ru/otzyvy
Успешной учебы!
Добрый день!
Заказать документ о получении высшего образования можно в нашей компании в столице.
asxdiplomik24.ru/otzyvy
Успешной учебы!
е•Џ
cipro pharmacy: buy ciprofloxacin over the counter – ciprofloxacin
Здравствуйте!
Как приобрести диплом о среднем образовании в Москве и других городах
smart-f.eu/купить-музыкальный-диплом/
父母
Здравствуйте!
Пошаговая инструкция по официальной покупке диплома о высшем образовании
http://www.jorditoldra.com/купить-диплом-новосибирск/
and fair. These collaborations have helped elevate the Aviator Game to its current status as a beloved online
buy ivermectin
Бонусное предложение активно до конца 2024 года. Фрибет – это бесплатные ставки на некоторое количество пари в букмекерской конторе Mostbet, которые выдается, если ввести mostbet промокод при регистрации mostbet, а затем – целиком заполнить анкету игрока в своем личном кабинете и подтвердить номер мобильного телефона. С помощью бесплатной ставки за Mostbet промокод вы можете делать ставки на любые виды спорта, однако учтите, что у Mostbet фрибета есть свои условия отыгрыша. Приветственный бонус Мостбет. Во время регистрации на Mostbet бетторы могут выбрать стартовый бонус – для ставок на спорт или для игры в казино. Промокоды Mostbet на сегодня. Не ошибемся, если скажем, что компания является одним из лидеров на рынке букмекерских услуг по количеству и разнообразию бонусных предложений. Белорусские бетторы могут воспользоваться всем их спектром. Промокод «Мостбет» при регистрации дает право новым бетторам получит 100% бонус на первый депозит, но не более 200 BYN (бел. рублей). Например, при пополнении баланса на 100 BYN сверху клиент получает аналогичный бонус. Если же речь идет о промокодах, которые дают право на бесплатную ставку, то моментом активации следует считать время совершения ставки при помощи такого купона.
д»‹зґ№
לבוא. ולקבל אותם מתי שרוצים. ואנחנו יודעים שזה מה שאתה רוצה ברגע זה. ואין שום בעיה, הנערות תמיד זמינות לתת שירות. ניתן למצוא לשכוח מכל הדאגות עם נערות ליווי בתל אביב אז מה לעשות באותם הרגעים בהם אתה מרגיש כי החיים לוחצים עלייך יותר מידי? מה לעשות כאשר נערת ליווי בחיפה – להרגיש גבר אמיתי
смотреть порно с гимнастками смотреть порно с гимнастками .
з‰еѕ…
can i get generic clomid without rx: how to get cheap clomid prices – how to buy cheap clomid tablets
貨物
жµЃе‹•
amoxicillin 500mg capsules: amoxicillin 500 coupon – amoxicillin canada price
Добрый день!
Приобрести диплом университета.
9213270296.ru/2024/07/04/kak-podobrat-nadezhnyy-internet-magazin-s-bolshim-vyborom-diplomov.html
order doxycycline: cost of doxycycline prescription 100mg – doxycycline 100mg capsules cost
追蹤
advancements have allowed for improved graphics, smoother gameplay, and more interactive features. These
ivermectin buy
Привет!
Купить документ ВУЗа вы можете в нашей компании в столице.
diploms-x.com/kupit-diplom-omsk
Успехов в учебе!
е¤љж•ё
й›ўй–‹
е€є
What a information of un-ambiguity and preserveness of precious familiarity about unpredicted emotions.
xslot guncel
家еє
dominicanrental.com