柔性数组
在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://indiaph24.store/# best online pharmacy india
https://canadaph24.pro/# best canadian online pharmacy
http://mexicoph24.life/# reputable mexican pharmacies online
https://canadaph24.pro/# online canadian pharmacy
best online canadian pharmacy Licensed Canadian Pharmacy safe reliable canadian pharmacy
я уже смотрел обзор здесь https://my-obzor.com/ перед тем, как сделать заказ. Не сказать, что все отзывы были 100% положительные, там уже упоминались основные минусы и плюсы.
mexican online pharmacies prescription drugs Mexican Pharmacy Online mexico drug stores pharmacies
Online medicine home delivery: Cheapest online pharmacy – pharmacy website india
Привет, дорогой читатель!
купить диплом
Желаю каждому отличных оценок!
https://www.dancerussia.ru/forum/viewtopic.php?f=17&t=16180
купить диплом о среднем специальном
купить диплом университета
купить диплом колледжа
casino tr?c tuy?n vi?t nam casino tr?c tuy?n vi?t nam casino online uy tin
https://casinvietnam.com/# casino tr?c tuy?n uy tin
casino tr?c tuy?n vi?t nam danh bai tr?c tuy?n casino tr?c tuy?n uy tin
web c? b?c online uy tin casino tr?c tuy?n vi?t nam casino tr?c tuy?n
http://casinvietnam.shop/# game c? b?c online uy tin
Благоустройство территории: создание комфортного окружения для жизни и отдыха
http://casinvietnam.com/# web c? b?c online uy tin
https://casinvietnam.shop/# casino tr?c tuy?n vi?t nam
casino tr?c tuy?n uy tín: casino tr?c tuy?n vi?t nam – casino tr?c tuy?n vi?t nam
https://casinvietnam.shop/# casino tr?c tuy?n vi?t nam
danh bai tr?c tuy?n casino online uy tin game c? b?c online uy tin
https://petroyalportrait.com/
Добрый день всем!
купить диплом Вуза
Желаю всем положительных отметок!
https://www.mazafakas.com/user/profile/3955649
купить диплом о высшем образовании
купить диплом Вуза
купить диплом
https://casinvietnam.shop/# choi casino tr?c tuy?n tren di?n tho?i
game c? b?c online uy tin game c? b?c online uy tin casino tr?c tuy?n uy tin
casino tr?c tuy?n casino tr?c tuy?n casino tr?c tuy?n
http://casinvietnam.shop/# danh bai tr?c tuy?n
PBN sites
We shall create a network of private blog network sites!
Advantages of our self-owned blog network:
We carry out everything so google doesn’t understand THAT THIS IS A PBN network!!!
1- We buy web domains from various registrars
2- The leading site is hosted on a VPS server (Virtual Private Server is rapid hosting)
3- Additional sites are on separate hostings
4- We attribute a unique Google account to each site with verification in Google Search Console.
5- We develop websites on WordPress, we do not utilize plugins with aided by which Trojans penetrate and through which pages on your websites are established.
6- We refrain from reiterate templates and use only individual text and pictures
We never work with website design; the client, if desired, can then edit the websites to suit his wishes
https://casinvietnam.com/# casino online uy tin
casino tr?c tuy?n uy tín: casino online uy tín – casino tr?c tuy?n
Все о дизайне интерьера
web c? b?c online uy tin game c? b?c online uy tin danh bai tr?c tuy?n
arusak-attestats.ru – Купить аттестат за 9 – возможность для вашему перспективам. На данном портале все вы сможете легко и оперативно заказать аттестат, необходимый для того, чтобы дальнейшего получения образования или трудоустройства. Наша консультанты обеспечивают высокое качество и конфиденциальность предоставления услуг. Приобретайте учебный сертификат в нашем сервисе и откройте новые перспективы для своего образования и трудоустройства.
https://arusak-attestats.ru – Купить аттестат в москве – путь к вашему будущему. На нашем сервисе вы сможете без труда и быстро купить аттестат, необходимый для того, чтобы дальнейшего обучения или профессионального роста. Наша специалисты гарантируют качество и конфиденциальность услуги. Покупайте учебный аттестат здесь и откройте другие возможности для своего образования и трудоустройства.
Можно ли купить аттестат – возможность для вашему перспективам. На нашем портале все вы можете без труда и оперативно купить аттестат, необходимый для дальнейшего обучения или трудоустройства. Наша эксперты гарантируют высокое качество и конфиденциальность предоставления услуг. Приобретайте учебный сертификат в нашем сервисе и проявите новые возможности для своего профессионального роста и трудоустройства.
game c? b?c online uy tín: casino tr?c tuy?n uy tín – casino tr?c tuy?n vi?t nam
https://moslabor.ru
https://zmiev.org.ua/
В наше время, когда аттестат – это начало удачной карьеры в любой области, многие пытаются найти максимально быстрый путь получения качественного образования. Наличие официального документа переоценить просто невозможно. Ведь именно диплом открывает дверь перед любым человеком, желающим начать профессиональную деятельность или учиться в ВУЗе.
Предлагаем очень быстро получить этот важный документ. Вы можете приобрести аттестат старого или нового образца, что является удачным решением для всех, кто не смог завершить обучение, потерял документ или хочет исправить свои оценки. Каждый аттестат изготавливается с особой аккуратностью, вниманием ко всем деталям. В результате вы получите продукт, полностью соответствующий оригиналу.
Преимущество данного решения заключается не только в том, что можно оперативно получить аттестат. Процесс организовывается просто и легко, с профессиональной поддержкой. От выбора нужного образца до консультации по заполнению персональной информации и доставки в любой регион страны — все находится под полным контролем качественных специалистов.
В результате, для тех, кто хочет найти быстрый способ получения необходимого документа, наша услуга предлагает выгодное решение. Купить аттестат – значит избежать продолжительного обучения и не теряя времени перейти к важным целям, будь то поступление в ВУЗ или начало карьеры.
http://prema-attestats.ru/
вип эскортницы
casino tr?c tuy?n vi?t nam casino tr?c tuy?n vi?t nam web c? b?c online uy tin
промокод вайнлаб официальный сайт
My truth and wellness blog is an online platform dedicated
to sharing authentic and evidence based information on various
aspects of personal well-being. With a focus on promoting a
holistic approach to health, this blog dives into topics such
as nutrition, fitness, mental health and overall lifestyle
choices. My goal is to inspire and support individual in
their journey towards a balanced and fulfilling life.
Fitness routines
game c? b?c online uy tin game c? b?c online uy tin casino tr?c tuy?n vi?t nam
В нашем обществе, где аттестат является началом удачной карьеры в любой области, многие стараются найти максимально быстрый и простой путь получения качественного образования. Необходимость наличия документа об образовании переоценить невозможно. Ведь именно диплом открывает дверь перед каждым человеком, который собирается вступить в сообщество квалифицированных специалистов или продолжить обучение в высшем учебном заведении.
В данном контексте мы предлагаем очень быстро получить этот необходимый документ. Вы имеете возможность приобрести аттестат старого или нового образца, и это будет удачным решением для человека, который не смог закончить обучение или потерял документ. Все аттестаты изготавливаются с особой аккуратностью, вниманием к мельчайшим деталям, чтобы на выходе получился продукт, 100% соответствующий оригиналу.
Плюсы такого подхода заключаются не только в том, что можно оперативно получить аттестат. Процесс организован комфортно и легко, с профессиональной поддержкой. От выбора необходимого образца аттестата до консультаций по заполнению персональной информации и доставки в любое место России — все находится под абсолютным контролем опытных специалистов.
Для тех, кто ищет максимально быстрый способ получить необходимый документ, наша компания предлагает выгодное решение. Заказать аттестат – значит избежать долгого обучения и сразу перейти к достижению своих целей, будь то поступление в ВУЗ или старт карьеры.
http://prema-attestats.ru/ – можно ли купить аттестат
В нашем мире, где аттестат – это начало удачной карьеры в любом направлении, многие стараются найти максимально простой путь получения образования. Наличие официального документа об образовании трудно переоценить. Ведь диплом открывает дверь перед любым человеком, который собирается вступить в профессиональное сообщество или продолжить обучение в любом ВУЗе.
В данном контексте мы предлагаем очень быстро получить этот важный документ. Вы имеете возможность купить аттестат, что становится удачным решением для всех, кто не смог завершить образование, утратил документ или желает исправить плохие оценки. Аттестат изготавливается с особой аккуратностью, вниманием к мельчайшим нюансам, чтобы в итоге получился документ, полностью соответствующий оригиналу.
Превосходство этого подхода заключается не только в том, что вы сможете оперативно получить аттестат. Процесс организовывается удобно, с нашей поддержкой. Начиная от выбора требуемого образца аттестата до консультаций по заполнению персональных данных и доставки в любой регион страны — все под абсолютным контролем качественных мастеров.
Таким образом, всем, кто ищет максимально быстрый способ получить требуемый документ, наша услуга предлагает выгодное решение. Приобрести аттестат – это значит избежать длительного обучения и не теряя времени переходить к личным целям: к поступлению в ВУЗ или к началу трудовой карьеры.
http://prema-attestats.ru/
Вы можете заказать у нас услуги грузчиков в Москве и Московской области для любых работ, начиная с обычных погрузо-разгрузочных и заканчивая всеми видами переездов и такелажных работ Грузчики Москва
casino tr?c tuy?n vi?t nam game c? b?c online uy tin choi casino tr?c tuy?n tren di?n tho?i
games casino
casino games
casino tr?c tuy?n uy tín: choi casino tr?c tuy?n trên di?n tho?i – casino tr?c tuy?n
http://casinvietnam.com/# game c? b?c online uy tin