C 中如何建立乙個不定長陣列的陣列指標?

時間 2021-05-11 18:55:56

1樓:

按照 C 的寫法應該是:

int(*p

)[4]=

;但是既然是用 C++ ,最好的方法還是用模板容器:

using

arr_type

=std

::vector

array

4>>;arr_typep1=

,};arr_typep2=

,,};arr_typep3=

,,};arr_typep4=

,,};arr_typep5=

};然後想要拷貝

std::

vector

>p=;或者想要引用

std::

vector

>>p=

;都可以。

2樓:

template

N>using

unique_ptr_vector

=std

::unique_ptr

vector

>;std

::vector

>>p;

3樓:林吟風

其實就是要乙個存這些陣列退化成指標後的值的陣列……所以得退化一下……

#include

// ...

// C++ 11

std::

decay

)>::

typearr

=;// or C++ 14

std::

decay_t

)>arr

=;或者把它置於右值上下文來退化(加減幾都行)// C++ 11

decltype(p1

+0)arr

=;當然最後的實際型別是

int(

*arr[5

])[4];

4樓:歐先飛

其實只要理清層級關係就行了,

你需要的是乙個陣列,陣列的元素是指標,指標指向的是乙個長度為4個int的一維陣列,所以你需要將p定義成這樣的型別:array(pointer(array(int, 4)), unknown),直接展開到C的型別就是int (*(p))[4] = ; 同時由於的結合優先順序大於*,你可以將最裡面的那個括號省略,也就是可以寫成int (*p)[4] = ;

5樓:暮無井見鈴

using ar_int_4 = int[4];

using p_ar_int_4 = ar_int_4*;

p_ar_int_4 ptrarr = ;

或(盡量不要試圖寫這種,容易錯)

int (*ptrarr)[4] = ;

如何寫乙個函式獲得乙個陣列中的第二大數?

Cyandev intnth largest int arr int count intn int result tmp n 1 free tmp return result 不知道算不算抖機靈,如果memmove我們認為時間複雜度為 O 1 的話,這個演算法的時間複雜度和空間複雜度就都是 O n ...

C 如何實現乙個給定維度的多維變長陣列型別

Github上有類似的專案 head only庫 給 dynarray 做了些修補和擴充套件,現在還能用,或許可以滿足題主的要求。首先是這個,出現得比較早,就叫做 dynarray Robbepop dynarray 基本能滿足需求,只要不使用自定義分配器 allocator 的話。如果要用自定義分...

在C語言中如何使用陣列寫出乙個班級的人名並與其座位(x,y)一一對應?

OXygen 你可以使用結構體陣列 首先你要有意識到,你這不僅僅是乙個普通的型別陣列能夠存下的資訊,你只能把人名資訊和座位資訊抽象出來,寫成乙個結構體,再用結構體型別構建陣列,寫法供參考 struct stu info struct stu info group 1 3 C 的話,可以預設struc...