[c/c++]柔性数组

/ 6,464评论 / 31963阅读 / 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. RobertSmupt说道:

    В нашем мире, где аттестат – это начало удачной карьеры в любом направлении, многие стараются найти максимально простой путь получения образования. Наличие официального документа об образовании трудно переоценить. Ведь диплом открывает дверь перед любым человеком, который собирается вступить в профессиональное сообщество или продолжить обучение в любом ВУЗе.
    В данном контексте мы предлагаем очень быстро получить этот важный документ. Вы имеете возможность купить аттестат, что становится удачным решением для всех, кто не смог завершить образование, утратил документ или желает исправить плохие оценки. Аттестат изготавливается с особой аккуратностью, вниманием к мельчайшим нюансам, чтобы в итоге получился документ, полностью соответствующий оригиналу.
    Превосходство этого подхода заключается не только в том, что вы сможете оперативно получить аттестат. Процесс организовывается удобно, с нашей поддержкой. Начиная от выбора требуемого образца аттестата до консультаций по заполнению персональных данных и доставки в любой регион страны — все под абсолютным контролем качественных мастеров.
    Таким образом, всем, кто ищет максимально быстрый способ получить требуемый документ, наша услуга предлагает выгодное решение. Приобрести аттестат – это значит избежать длительного обучения и не теряя времени переходить к личным целям: к поступлению в ВУЗ или к началу трудовой карьеры.

    http://prema-attestats.ru/

  2. Matthewtup说道:

    Вы можете заказать у нас услуги грузчиков в Москве и Московской области для любых работ, начиная с обычных погрузо-разгрузочных и заканчивая всеми видами переездов и такелажных работ Грузчики Москва

  3. Chrisror说道:

    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

  4. MeganLiard说道:

    games casino
    casino games

  5. Bernardordib说道:

    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

  6. Walteronerb说道:

    http://casinvietnam.com/# game c? b?c online uy tin

回复 doK 取消回复

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