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-2020 CODEPRJ.COM