柔性数组
在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;
}
Boomerang Casino – das neue Online-Casino-Erlebnis
Das Boomerang Casino ist eine aufregende neue Online-Spielothek, die Spielern eine Vielzahl von Spielen und Unterhaltungsmöglichkeiten bietet. Mit einer benutzerfreundlichen Oberfläche und einem umfangreichen Spieleportfolio ist das Boomerang Casino die perfekte Wahl für alle, die auf der Suche nach einem unterhaltsamen und lohnenden Online-Casino-Erlebnis sind.
Das Boomerang Casino bietet eine breite Palette von beliebten Casino-Spielen, darunter Spielautomaten, Tischspiele, Live-Casino-Spiele und vieles mehr. Mit Spielen von fГјhrenden Anbietern wie NetEnt, Microgaming, Play’n GO und Evolution Gaming kГ¶nnen Spieler sicher sein, eine erstklassige Spielerfahrung zu genieГџen.
Ein weiterer Höhepunkt des Boomerang Casinos sind die großzügigen Bonusangebote und Aktionen, die regelmäßig veranstaltet werden. Neue Spieler können von großzügigen Willkommensboni profitieren, während treue Spieler durch ein lukratives Treueprogramm belohnt werden. Mit regelmäßigen Sonderaktionen, Turnieren und Verlosungen gibt es immer spannende Möglichkeiten, zusätzliche Belohnungen zu gewinnen.
Das Boomerang Casino legt großen Wert auf die Sicherheit und den Schutz seiner Spieler. Mit einer sicheren und zuverlässigen Plattform können Spieler sicher sein, dass ihre persönlichen Daten und finanziellen Transaktionen immer geschützt sind. Das Casino verfügt über eine Lizenz von einer angesehenen Glücksspielbehörde und garantiert faire Spiele durch regelmäßige Überprüfungen und Tests.
Insgesamt ist das Boomerang Casino eine ausgezeichnete Wahl für alle, die ein erstklassiges Online-Casino-Erlebnis suchen. Mit einer großen Auswahl an Spielen, großzügigen Bonusangeboten und einem engagierten Kundensupport ist das Boomerang Casino definitiv einen Besuch wert. Besuchen Sie noch heute das Boomerang Casino und entdecken Sie selbst, warum es zu den besten Online-Casinos gehört. Viel Spaß und viel Glück!
https://boomerangcasino.one/
amoxicillin 875 125 mg tab over the counter amoxicillin amoxicillin 500mg prescription
zithromax prescription in canada: zithromax z-pak – can you buy zithromax over the counter
buy zithromax online fast shipping: zithromax – where to buy zithromax in canada
Столбец бэклинков
После того как множества обновлений поисковой системы G необходимо применять разнообразные варианты ранжирования.
Сегодня есть способ привлечения внимания поисковых систем к вашему сайту с помощью обратных ссылок.
Бэклинки являются эффективным инструментом продвижения, но также имеют органический трафик, прямых продаж с этих ресурсов скорее всего не будет, но переходы будут, и именно поеденического трафика мы тоже получаем.
Что в итоге получим на выходе:
Мы показываем сайт поисковым системам с помощью обратных ссылок.
Получают органические переходы на веб-сайт, а это также информация для поисковых систем, что ресурс пользуется спросом у пользователей.
Как мы показываем поисковым системам, что сайт ликвиден:
1 обратная ссылка делается на главную страницу, где основная информация.
Делаем обратные ссылки через редиректы трастовых сайтов.
Главное – мы добавляем сайт в специализированные инструменты для анализа сайтов, где он кэшируется, а затем полученные ссылки размещаются в виде редиректов на блогах, форумах, в комментариях.
Это важное действие показывает всем поисковикамКАРТУ САЙТА, так как анализаторы сайтов показывают всю информацию о сайтах со с тайтлами, ключами, h1,h2,h3 и это очень ХОРОШО
prednisone prescription for sale prednisone over the counter cost prednisone 1mg purchase
generic zithromax india: zithromax capsules 250mg – zithromax coupon
https://gabapentinneurontin.pro/# neurontin 100mg tab