[c/c++]柔性数组

/ 9,520评论 / 44822阅读 / 0点赞

柔性数组

在C99标准之后,在结构体中最后一个元素允许是未知大小的,称之为柔性数组

struct CoolArr_s{
	int len;
	char arr[];
};
#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;
}

在C++中的柔性数组

注意:在c++中并不建议使用柔性数组,而应考虑使用array代替。即使它可以使用在struct和class中,但部分编译器是不支持这种操作的。

#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;
}
  1. Edwardcit说道:

    Achat mГ©dicament en ligne fiable: kamagra gel – pharmacie en ligne france livraison belgique

  2. Edwardcit说道:

    Pharmacie Internationale en ligne: kamagra oral jelly – Pharmacie Internationale en ligne

  3. Edwardcit说道:

    vente de mГ©dicament en ligne: cialis sans ordonnance – pharmacie en ligne fiable

  4. AllenTal说道:

    pharmacie en ligne livraison europe: kamagra en ligne – pharmacie en ligne fiable

  5. Edwardcit说道:

    pharmacie en ligne sans ordonnance: cialis generique – trouver un mГ©dicament en pharmacie

  6. IgnacioGinia说道:

    pharmacie en ligne france livraison belgique: kamagra gel – pharmacie en ligne france livraison internationale

  7. RobertDer说道:

    https://kamagraenligne.com/# pharmacie en ligne france livraison internationale

  8. AllenTal说道:

    Meilleur Viagra sans ordonnance 24h: Meilleur Viagra sans ordonnance 24h – Viagra femme sans ordonnance 24h

  9. Jseraldskync说道:

    На сегодняшний день, когда диплом является началом удачной карьеры в любом направлении, многие стараются найти максимально быстрый и простой путь получения образования. Факт наличия документа об образовании сложно переоценить. Ведь диплом открывает дверь перед людьми, желающими вступить в сообщество профессионалов или учиться в университете.
    В данном контексте мы предлагаем максимально быстро получить любой необходимый документ. Вы сможете заказать диплом нового или старого образца, и это становится выгодным решением для человека, который не смог закончить обучение или потерял документ. Каждый диплом изготавливается с особой аккуратностью, вниманием к мельчайшим элементам. В итоге вы получите документ, максимально соответствующий оригиналу.
    Преимущества подобного подхода заключаются не только в том, что можно быстро получить диплом. Процесс организовывается удобно, с профессиональной поддержкой. Начиная от выбора необходимого образца диплома до точного заполнения персональной информации и доставки по России — все под полным контролем квалифицированных специалистов.
    Для всех, кто пытается найти максимально быстрый способ получения необходимого документа, наша компания предлагает отличное решение. Заказать диплом – это значит избежать длительного обучения и сразу перейти к важным целям: к поступлению в ВУЗ или к началу трудовой карьеры.
    forum.sevastopol.info/viewtopic.php?style=6&t=867628&start=50В 
    lewis-carroll.ru/library/luis-kerroll-i-vitgenshtein44.htmlВ 
    devzata.ru/eti-fakty-o-svoej-gruppe-krovi-dolzhen-znat-kazhdyj/В 
    http://www.karkas-dom.ru/sostav_domkomplekta.htmlВ 
    hvoinie.ru/xvojnye-derevya/listvennica.htmlВ 

  10. Keithhak说道:

    Viagra homme prix en pharmacie Viagra generique en pharmacie SildГ©nafil 100mg pharmacie en ligne

  11. Edwardcit说道:

    pharmacies en ligne certifiГ©es: levitra generique prix en pharmacie – п»їpharmacie en ligne france

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注