1樓:匿名使用者
char array[10][20];
給每個char數值清零:
方法一:memset(array, 0, sizeof(array)); //array不能是指標
方法二:for(int i=0; i<10; i++) memset(array[i], 0, 20);
2樓:匿名使用者
剛剛沒有注意到是二維
char buf[5][10];
memset(buf,0,sizeof(buf));
函式原型
void *memset(void *s, int ch, size_t n);
函式解釋:將s中前n個位元組 (typedef unsigned int size_t)用 ch 替換並返回 s 。
memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法
3樓:匿名使用者
char ch[5][5];
memset (ch[0],0,_countof(ch));
memset (ch[0],0,sizeof(ch));
4樓:匿名使用者
如果你定義的是
char data[55][2];
可以用memset(data,0,sizeof(data));
5樓:
memeset()只能賦0或-1的,
memset(c,0,sizeof(c));
或者memset(c,0,sizeof(char)*二維陣列大小);
char[]陣列該如何賦值
6樓:匿名使用者
#include
#include
int main()
printf("%s\n",c_con2);
}輸出:10;20;30;
各位大哥,c語言二維陣列怎麼用memset()函式
7樓:
用一個迴圈來迴圈賦值為#,c和c++中只知道這個方法
8樓:匿名使用者
例如:char data[10][10];
memset(data, '#', sizeof(data));
有關於c++多維陣列的初始化
9樓:敗筆i無悔
c++是在c語言的基礎上開發的一種物件導向程式語言,應用廣泛。c++支援多種程式設計正規化 --物件導向程式設計、泛型程式設計和過程化程式設計。最新正式標準c++於2023年8月18日公佈。
其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:類、封裝、過載等特性!
陣列必須作為 extern 或者 static 儲存類來定義才能初始化
分行給二維陣列賦初值。如
static int a[3][4]=,,};
這種賦初值方法比較直觀,把第一個花括弧內的資料賦給第一行的元素,第二花括弧內的資料賦給第二行的元素,......,即按行賦初值。
可以將所有資料寫在一個花括弧內,按陣列排列的順序對各元素賦初值。如:
static int a[3][4]=;
效果與前相同。但以第1種方法為好,一行對一行,界限清楚。用第2種方法如果資料多,寫成一大片,容易遺漏,也不易檢查。
可以對部分元素賦初值。
static int a[3][4]=,,};
它的作用是隻對各行第1列的元素賦初值,其餘元素值自動為0。賦初值後陣列各元素為
也可以對各行的某一元素賦初值:
static int a[3][4]=,,};
初始化後的陣列元素如下:
這種方法對非0元素少時比較方便,不必將所有的0都寫出來,只需輸入少量資料。也可以只對某幾行元素賦初值:
static int a[3][4]=};
陣列元素為:
第三行不賦初值。也可以對第二行不賦初值:
static int a[3][4]=,{},};
如果對全部元素都賦初值(即提供全部初始資料),則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。如
static int a[3][4]=;
與下面的定義等價:
static int a[4]=;
系統會根據資料總個數分配儲存空間,一共12個資料,每行4列,當然可確定為3行。
在定義時也可以只對部分元素賦初值而省略第一維的長度,但應分行賦初值。如
static int a[4]=,{},};
這樣的寫法,能通知編譯系統:陣列共有3行。陣列各元素為memset(buff,0,5*100*sizeof(char));
10樓:和小敘
這個......
不管是多維陣列還是一維陣列,其實都是一個意思,它們存放在記憶體當中都是連續的,只是表示的方法不一樣而已。
要用陣列首先要清楚,一個陣列在定義時長度已經是確定了的(即陣列元素個數確定),確定了編譯器才知道分多少記憶體給這個陣列,不然編譯出錯。如果你在定義陣列時沒有說明陣列長度,只給出陣列各個元素的值,編譯器會根據給出的元素值的個數確定陣列長度。下面的兩種情況:
char arr1[8] = ; //陣列長度為8 能表示到arr1[7]
char arr2[ ] = ; //陣列長度為2 只能表示到arr2[1]
這裡有個預設值的說法。沒初始化的陣列元素它們都預設為0。也就是說,在你定義一個陣列時已經確定了它的長度,如果你不初始化它們,預設都為0 。
你的程式中只是對第一個元素給出了3,其它的都沒有初始值,預設為0。
因此才會輸出0。這很正常。
給你個建議,如果你嫌你定義的陣列太大了,每個都要寫個3,太痛苦了,可以來三層迴圈:
for(i = 0;i < 10;i ++)}}
這樣每個都是3了。
11樓:吥洅丨錯過
我們知道,一維空間是一條線,數學中用一條數軸來表達;二維空間是一個平面,數學中用平面座標系來表達。那麼二維陣列又是什麼樣的呢?
線與面我們用一個下標來描述一維陣列中的某個元素,就好像在用數描述一條線上的點。而所有的資料都是儲存在一條線上。如果我們採用兩個下標,就能形成一個平面,猶如一張**,有行有列,所有的資料就能夠存放到**裡。
我們把二維陣列的兩個下標分別稱為行下標和列下標,在前面的是行下標,在後面的是列下標。
那麼什麼時候要用二維陣列呢?一般有兩種情況,一種是描述一個二維的事物。比如用1表示牆,用0表示通路,我們可以用二維陣列來描述一個迷宮地圖;用1表示有通路,0表示沒有通路,我們可以用二維陣列來描述幾個城市之間的交通情況。
還有一種是描述多個具有多項屬性的事物。比如有多個學生,每個學生有語文、數學和英語三門成績,我們就可以用二維陣列來描述。
對於第二種情況,我們要注意各項屬性應該是同一種資料型別,比如三種學科的成績都是整數。如果出現了姓名(字串屬性),就不能將他們組合到一個二維陣列裡去。所以不要企圖將不同資料型別的屬性整合到一個二維陣列中去。
二維陣列的宣告和初始化
二維陣列的宣告和一維陣列是類似的,不同之處只是多了一個下標:
資料型別陣列名[行數][列數];
要注意,二維陣列的下標也都是從0開始的。
二維陣列的初始化分為兩種,一種是順序初始化,一種是按行初始化,我們來看一段程式,就能夠對它們有所瞭解了:(程式7.4.1)
#include "iostream.h"
#include "iomanip.h"
int main()
;//順序初始化
int array2[3][2]=,,};//按行初始化
cout <<"array1" < for (int i=0;i<3;i++)//輸出陣列array1 cout < }cout <<"array2" < for (int k=0;k<3;k++)//輸出陣列array2 cout < }return 0; }執行結果: array1 4 25 6 13 4 array2 4 25 8 6 8我們可以看出,所謂按順序初始化就是先從左向右再由上而下地初始化,即第一行所有元素都初始化好以後再對第二行初始化。而按行初始化則是用一對大括號來表示每一行,跳過前一行沒有初始化的元素,在行內從左向右地進行初始化。對於沒有初始化的元素,則都是一個不確定的值。 省略第一維的大小 我們在第一節學到,一維陣列的大小可以省略。可是二維陣列的元素個數是行數和列數的乘積,如果我們只告訴電腦元素個數,電腦無法知道究竟這個陣列是幾行幾列。所以,c++規定,在宣告和初始化一個二維陣列時,只有第一維(行數)可以省略。 比如:int array[3]=; 相當於: int array[2][3]=; 二維陣列在記憶體中的儲存情況 先前已經說明,記憶體是依靠地址來確定記憶體中的唯一一個儲存單元的,即只有一個引數。所以在記憶體中,所有的資料都是像一維陣列那樣順序儲存的。那麼具有兩個下標的二維陣列是怎樣存放到記憶體中的呢? 在記憶體中,先將二維陣列的第一行按順序儲存,接著就是第二行的資料,然後是第三行的資料……右圖(圖7.4)所示的就是一個二維陣列在記憶體中的儲存情況。 向函式傳遞二維陣列 我們知道,陣列作為引數傳遞給函式的是陣列首元素的地址。對於二維陣列來說亦是如此。不過有兩個問題,一個是我們必須讓函式知道行數和列數,這就像我們要讓函式知道一維陣列的大小一樣,防止發生越界訪問。 另一個就是我們必須讓電腦知道這個二維陣列是怎樣的一個**,即必須告知陣列的列數。這和只能省略二維陣列的行數道理是一樣的。下面我們就來看一個向函式傳遞二維陣列的程式: #include "iostream.h" #include "iomanip.h" void disp(int a[2],int r,int c);//告知陣列的列數 int main() ;cout <<"array" < disp(array,3,2); 12樓: int arr[10][21][32]=;這樣對多維陣列可以初始化為全0。但遵循的規則是:陣列宣告並初始化時{}中沒有寫全的後面部分被自動初始化為0。 所以你寫int arr[10][21][32]=;的結果是arr[0][0][0]=3,其餘的都是0。想要初始化為全3,可以用memset函式。 13樓:特立獨行的瓜慫 如果是二維陣列就這樣 int a[2][3]=,} a[m][n]就有m個小{}號 最外面是{}號包起來每個小的{}裡有n個資料,可以部分初始化 也可以全部初始化 string其實就是char陣列,讀的時候傳入的只是這個char陣列的首地址.比如 str 256 scanf s str 那麼對於string陣列來說也是一樣 比如你說的 s 10 20 對於這個2維陣列的10個string的首地址就是s 0 s 9 所以讀的時候可以用一個迴圈 for i 0 i... include using namespace std class foo foo foo foo foo 返回指向二維陣列的指標函式 int foo test2darray unsigned r,unsigned c return arr2d int main cout endl 釋放記憶體 fo... int i,j,a 3 4 b 12 int n 0 for i 0 i 3 i for j 0 j 4 j 就baiok了 給點du辛苦分 zhi吧dao 謝謝專 屬 可以採用兩種 來方式 1 按元素賦自 值 遍歷 bai一維陣列,並將每個元素賦值到二du維陣列的對應元zhi素上。dao 或者遍歷...在C中怎麼給二維陣列賦值
c 類函式中怎麼返回和使用二維陣列
請問在C語言中,如何將二維陣列的值賦給一維陣列。謝謝