zoukankan      html  css  js  c++  java
  • c++ 数组

    前言:

    数组用于处理同类型数据的集合,它是把相同格式类型的数据元素组合到一起的的容器或者说是工具。有了数组这个工具,我们的代码和编程工作变得极为方便,不用一个一个定义数据了。一个数组在内存中占据一片连续的存储单元。

    一、数组知识总结及使用过程中的注意事项:

    1、数组大小必须是指值为正的常量,不能为变量。一旦定义不能改变大小。
    2、数组大小最好用宏来定义。
    3、数组定义后需要赋初值,不然仍然是随机数。
    4、 对数组的赋值可用循环来做,二维数组用循环嵌套赋值或是输入输出。包含在头文件#include中的函数memset可以对数组进行清零处理,但不可以对整型变量进行正常赋值,因为memset是对字节赋值的,对char类变量单个赋值是没有问题的。
    5、int a[5]={}表示数组中的5个元素都初始化为0。int a[10]={0,1,2}表示对数组前三个元素赋值为0.1.2,其余元素赋值为0。

    二、关于字符数组

    1、举例:'a’表示一个字符,只有字符a,而"a"是字符串,包含a和。引用字符空格应用单引号。

    2、输入问题:由scanf得到的字符串不会有空格,回车即使下一段。使用gets只能输入一个字符串,可以得到包含空格的字符串。个人感觉做题的时候scanf比cin好用,效率更高。

    3、puts语句输出一个字符串和一个换行符。

    三、访问数组元素

    int arr1[3] = {1, 2, 3};  //满初始化
    int arr2[] = {1, 2, 3}; //省略数组大小,由元素个数决定;
    int arr3[3] = {1, 2}; //缺少的默认为0
    int arr4[3] = {1, 2, 3, 4}; //错误,不能超过数组长度  
    char arr5[3] = {'a', 98, 'c'};//因为是字符类型,所以98其实就是字符'b'
    char arr6[] = "abcdef";   //直接用双引号写字符串

    数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。
    数组是使用下标来访问的,下标是从0开始。
    数组的大小可以通过计算得到。(size = sizeof(arr)/sizeof(arr[0]));

    #include "stdafx.h"
    
    int main()
    {
        //int变量先定义后初始化
        int a;
        a = 10;
        //变量a的大小就是int的大小
        printf("sizeof(a) = %d
    ", sizeof(a));
        printf("sizeof(int) = %d
    ", sizeof(int));
        
    
        int arr[10]={0};  //a[0]--a[9]  
        printf("sizeof(arr) = %d
    ", sizeof(arr)); //sizeof(arr)等于求解int*10大小

    for(int i=0;i<10;i++) { arr[i] = a++; //循环打印每个地址的数据,以及相应的地址 printf("arr[%d]=%d,addr:%p ", i, arr[i],&arr[i]); } getchar(); return 0; }

    补充:结构体的作用

    • 在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。
    • 结构体在函数中的作用不是简便,最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。
    #include <iostream> 
    
    using namespace std;
    
    struct SAMPLE
    {
        int x;
        int y;
        int add() {return x+y;}
    }s1;
    
    int main()
    {
        cout<<"没初始化成员变量的情况下:"<<s1.add()<<endl;
        s1.x = 3;
        s1.y = 4;
        cout<<"初始化成员变量的情况下:"<<s1.add()<<endl;
        system("pause");
        return 0;
    }
    =>没初始化成员变量的情况下:0
      初始化成员变量的情况下:7

    struct Student
        {
            int a;
        }stu1;//stu1是一个变量
    typedef struct Student2
        {
            int a;
        }stu2;//stu2是一个结构体类型
    //使用时可以直接访问stu1.a
    //但是stu2则必须先 stu2 s2;
    //然后 s2.a=10;
    #include <iostream> 
    
    using namespace std; 
    
    typedef struct _point{ 
               int x; 
               int y; 
    }point; //定义类,给类一个别名 
    struct _hello{ 
               int x,y; 
    } hello; //同时定义类和对象 
    int main() 
    { 
       point pt1; 
       pt1.x = 2; 
       pt1.y = 5; 
       cout<< "ptpt1.x=" << pt1.x << "pt.y=" <<pt1.y <<endl; 
       //hello pt2; 
       //pt2.x = 8; 
       //pt2.y =10; 
       //cout<<"pt2pt2.x="<< pt2.x <<"pt2.y="<<pt2.y <<endl; 
       //上面的hello pt2;这一行编译将不能通过. 为什么? 
       //因为hello是被定义了的对象实例了. 
       //正确做法如下: 用hello.x和hello.y 
       hello.x = 8; 
       hello.y = 10; 
       cout<< "hellohello.x=" << hello.x << "hello.y=" <<hello.y <<endl; 
       return 0; 
    }

    参考链接:https://blog.csdn.net/weixin_43238423/article/details/85219289 

         https://blog.csdn.net/baidu_34933057/article/details/100983504

  • 相关阅读:
    linux下聊天工具的安装
    Linux上OpenLDAP集群
    Linux下python基础调试
    曾仕强主讲:易经的奥秘(全文讲义)
    Linux单网卡多个IP(或者多个网卡多个IP)设置
    单播、广播、组播的区别和特点
    谷歌招聘 变态15题你会做几道?
    Gartner再评RSA为网络欺诈检测领导者 狼人:
    云安全 安全领域的最大热点之一 狼人:
    金山毒霸专业版高调上线 宣称杀毒速度增3倍 狼人:
  • 原文地址:https://www.cnblogs.com/shierlou-123/p/12391951.html
Copyright © 2011-2022 走看看