C語言 關於C裡面陣列批量初始化

時間 2021-05-10 06:24:30

1樓:蛋蛋的蛋

int a[1000] = ;

補充一下,類似的方式可以讓前500個元素等於1,後500個等於0,手機打字,不方便,有心人自己嘗試吧,

2樓:向晨

c標準庫有個limits.h的標頭檔案,裡面有你所使用機器的int char等型別變數的位元組長度和大小限制相關的巨集,可以用這些巨集來知道乙個int對應幾個char位元組作為memset的實參,補充一下,看了後面答案,針對問題4的回答,int型別的指標str在使用memset時強制轉換為char型別指標

3樓:李程

我想提醒的是int a[1000] = ;就是把a中的1000個元素全部初始化為0,但是int a[1000] = ;並不是把1000個元素初始化為5,它只是初始化第乙個

4樓:

每次看到這種基本的東西標準不支援就蛋疼,就想安利C++11/14.

std::

array

1000

>a;a.fill(29);

5樓:

用 gcc 或者 clang 都可以搞

6樓:開心

寫乙個資料檔案,定義陣列的時候直接include這個檔案即可。類似

char filename = "d:\\in.dat";

7樓:jimmy

首先,memset函式是逐字節進行填充,所以a一般為char *型。

其次,對於其它型別的a,可以填充的值有兩個:0和-1,這是由於計算機中用二進位制補碼表示數字,0和二進位制補碼為全0,-1的二進位制補碼為全1。

最後,如果是memset(a,5,1000*sizeof(int)),就會對每個位元組填充5,所以乙個int則為0x05050505。

@Neicul Luc 提醒,memset填充int陣列中的數字,除了0和-1可以直接用0和-1填充外,其它不方便填充!如果你想得到0x05050505,那用5填充到是乙個機智的做法!

8樓:林麵包

int a = ;//1000個5

就行了。

如果覺得麻煩的話…

就用巨集吧!

9樓:polossk

我就說下memset,那個函式你如果看到了函式頭就知道了,第二個引數,會強制轉換成char的,然後,也就是說,即便是你想給int刷,刷的東西也非常有限。

當然有沒有函式呢?有的,這個函式叫fill,然而,這個函式是c++的,超過了C語言的狹義範疇了。

參考文獻:

fill c++ std::fill - cppreference.com

memset c++ std::memset - cppreference.com

memset c memset, memset_s

C語言中字元陣列用 初始化?

Elias Wang 我們大致先把概念理清一下 字元陣列 初始化 在宣告變數的同時,為變數分配儲存空間,並初始化資料34 foo string literal 形式,初始化變數位址39 f o o 0 array 形式 賦值 變數已經被宣告,再對變數已有的儲存空間進行操作34 foo string ...

c 變數初始化規則有哪些?

針對C 11,簡單地說,我認為可以分為下面兩條 使用auto關鍵字的初始化 auto i 1 這樣的,注意的地方就是用了auto就不要用 不要寫成auto i。這兩個是不一樣的,具體請參考initializer list這個東西。不使用auto關鍵字,使用 的初始化。int i 這樣。不要用auto...

C 類本身的初始化和靜態欄位的初始化到底發生在什麼時候?

餘葉 其實就兩個構造器。乙個是靜態的,乙個是普通的。靜態構造器得需要你第一次訪問到該類的時候會被觸發。建立的時候,包括 static 成員變數的初始化和static構造器,其實 static 成員變數會整合進static構造器裡面的。而普通成員變數也會整合進普通構造器裡面的。 天煞 如 Sai說的,...