c++數組初始化賦值


 1 #include<iostream>
 2 #include<string.h>
 3 #include<algorithm>
 4 #define max 0x3f
 5 using namespace std;
 6 int main()
 7 {
 8     int b[6];
 9     int a[5][5];
10     fill(a[0],a[0]+5*5,12);
11 //    memset(a,0,sizeof(a));
12 //    memset(a,-1,sizeof(a));
13 //    memset(a,max,sizeof(a));
14     /*fill對二維數組賦初值,要從a[0]開始,而不是a */
15     /*而memset對二維或者一維數組賦值只能是賦值為0,-1,max(16進制)*/
16 //    memset(b,0,sizeof(b));
17 //    memset(b,-1,sizeof(b));
18 //    memset(b,max,sizeof(b));
19     fill(b,b+6,9);
20     cout<<"a數組:\n";
21     for(int i=0;i<5;i++)
22     {
23         for(int j=0;j<5;j++)
24         {
25             cout<<a[i][j]<<" ";
26         }
27         cout<<endl;
28     }
29     cout<<"b數組:\n";
30     for(int i:b)
31     {
32         cout<<i<<" ";
33     }
34     cout<<endl;
35     cout<<"下面是c數組:\n";
36     char c[3][5];
37     /* 字符數組則可以用memset,fill任意賦值。*/
38     memset(c,'l',sizeof(c));/* 這里是賦值為'l'*/
39     fill(c[0]+7,c[0]+8,'8');/* 這里把'8'改為'1',你會發覺c數組好像每一位都一樣。
40     強烈吐槽,'1'和'l'在控制台輸出看不出差別。*/
41     /* 准確來說,fill賦值是從指定位置開始,然后長度為結束位置減去初始位置。
42     這里就是c[0]+8-c[0]+7=1。所以這里只給c[0]+7這一位賦值。 
43     */
44     for(int i=0;i<3;i++)
45     {
46         for(int j=0;j<5;j++)
47         {
48             cout<<c[i][j]<<" ";
49         }
50         cout<<endl;
51     }
52 } 

怎么調試才能看出所有區別和問題所在呢?答案是多多輸出。只有這樣對比着看,才能知道程序運行到哪兒了,和預期差在哪兒,崩在哪了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM