• c++数组初始化赋值


     纸上得来终觉浅,绝知此事要躬行。
     1 #include<iostream>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     int a[5];
     8     memset(a,257,20);//257,随便填吧,因为对一个字节复赋值,多了也会溢出的。257%256 
     9     /*
    10     67372036 67372036 67372036 67372036 67372036
    11     因为0x4040404 = 67372036
    12     memset,从一个地址开始,对连续20个字节,每个字节都设置为4。
    13     所以,memset对大小为1个字节的数据类型分配比较靠谱,int一般为4字节,所以
    14     并非是对一个int分配为4 
    15     */
    16     for(int i=0;i<5;i++)
    17     {
    18         cout<<a[i]<<" ";
    19     }
    20     cout<<endl;
    21     int b[5];
    22     memset(b,0,sizeof(b));
    23     fill(b+2,b+3,1000); 
    24     /*
    25     0 0 1000 0 0,有次可知,fill是从一个起始位置分配1000到终点位置(终点位置不会分配),这个对比memset就是
    26     考虑了数组的数据类型,对一整个int赋值为1000 
    27     */
    28     for(int i=0;i<5;i++)
    29     {
    30         cout<<b[i]<<" ";
    31     }
    32     cout<<endl;
    33     
    34     int c[5][5];
    35     memset(c[0],0,100);
    36     memset(c[0],4,52);
    37     /*
    38     67372036 67372036 67372036 67372036 67372036
    39     67372036 67372036 67372036 67372036 67372036
    40     67372036 67372036 67372036        0        0
    41        0        0        0        0        0
    42        0        0        0        0        0
    43     二维数组起始也没什么需要主要的,唯一的就是起始地址为c[0]不是c了。 
    44     */
    45     for(int i=0;i<5;i++)
    46     {
    47         for(int j=0;j<5;j++)
    48         {
    49             printf("%8d ",c[i][j]);
    50         }
    51         cout<<endl;
    52     } 
    53     cout<<endl;
    54     int d[5][5];
    55     fill(d[0],d[0]+5*5,66); 
    56     /*
    57     66 66 66 66 66
    58     66 66 66 66 66
    59     66 66 66 66 66
    60     66 66 66 66 66
    61     66 66 66 66 66
    62     这个也是注意起始地址即可。 
    63     */
    64     for(int i=0;i<5;i++)
    65     {
    66         for(int j=0;j<5;j++)
    67         {
    68             printf("%2d ",d[i][j]);
    69         }
    70         cout<<endl;
    71     } 
    72     cout<<endl;
    73 }

    怎么调试才能看出所有区别和问题所在呢?答案是多多输出。只有这样对比着看,才能知道程序运行到哪儿了,和预期差在哪儿,崩在哪了。

  • 相关阅读:
    sql 笔记之一
    js的Location
    VS无法使用.XXXX附加到程序
    C#遍历对象的方法
    解决tomcat启动时中文乱码问题。
    动态sql foreach 循环报错问题
    java跳过https证书直接请求工具类
    安装svn报2503错误处理方法
    oracle常用的一些查询命令
    Oracle11g安装过程中忘记进行口令配置
  • 原文地址:https://www.cnblogs.com/dayq/p/11949351.html
Copyright © 2020-2023  润新知