zoukankan      html  css  js  c++  java
  • 数组

    数组申明:type arrayname[arrarysize]  如: int student[100];  int student[100][100]; 

    数据初始化:大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。如果没有写大小,数组的大小则为初始化时元素的个数。如:

    int student[3] = {1,2,3}; 
    int student[3] = {0}; //初始化为0
    int student[] = {1,2,4}; //没有指定大小,编译器自动分配大小

    如何把一个数组的值赋给另一个数组:一个方法就是用循环的方式一个一个赋值,另一个办法就是用 void *memcpy(void *dst, void *src, size_t size); 函数。这个函数的功能为将src上大小为size字节的数据赋值到dst上。如:

    1 int a[5];
    2 int b[5];
    3 memeopy(a,b,sizeof(b)); //把b的值赋给a

    数组作为参数:当数组作为一个函数的参数传递时,数组类型自动转换为指针类型,因此传的实际是地址。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 void one(int *array); //形式参数是一个指针
     5 void two(int array[]); // 形式参数是一个未定义大小的数组
     6 void three(int array[5]); // 形式参数是一个已定义大小的数组
     7 
     8 int main()
     9 {
    10     int n;
    11     int array[5] = { 0 };
    12     int *arr;
    13     arr = array;  //也可以写成 int *arr = array;
    14     one(array);
    15     two(array);
    16     three(array);
    17     printf("数组=%d
    ", sizeof(array)/sizeof(int)); //得到数组array的内存所占大小
    18     printf("指针=%d
    ", sizeof(arr));  //得到指针arr的内存所占大小
    19     return 0;
    20 }
    21 
    22 void one(int *array)
    23 {
    24     int one_size = 0;
    25     one_size = sizeof(array);
    26     printf("one_size=%d
    ", one_size);
    27 }
    28 
    29 void two(int array[])
    30 {
    31     int two_size = 0;
    32     two_size = sizeof(array);
    33     printf("two_size=%d
    ", two_size);
    34 }
    35 
    36 void three(int array[5])
    37 {
    38     int three_size = 0;
    39     three_size = sizeof(array);
    40     printf("three_sizs=%d
    ", three_size);
    41 }

    结果为:

    1 one_size=8
    2 two_size=8
    3 three_sizs=8
    4 数组=5
    5 指针=8

    上面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。

    数组作为返回值:C++ 不允许返回一个完整的数组作为函数的参数。但是,可以通过指定不带索引的数组名来返回一个指向数组的指针。所以如果想要返回一个数组,必须先定义一个返回类型为指针类型的函数。另外C++不支持在函数外返回局部变量的地址,所以使用static定义局部变量(就是数组)来实现返回数组。举个栗子:

     1 #include <time.h>
     2 #include <iostream>
     3 using namespace std;
     4 
     5 
     6 int *student()   //定义一个指针类型的返回类型
     7 {
     8     srand((int)time(0));
     9     static int array[10] = { 0 };  //用static定义
    10     int i;
    11     for (i = 0; i<10; i++)
    12     {
    13         array[i] = rand() % 100;
    14         printf("array[%d] = %d
    ", i, array[i]);
    15     }
    16     return array;
    17 }
    18 
    19 int main()
    20 {
    21     int *p = student();   //把array的地址赋给指针p
    22     int n;
    23     for (int i = 0; i < 10; i++)
    24     {
    25         cout << "*(p + " << i << ") : ";
    26         cout << *(p + i) << endl;   //打印出指针所指地址的值
    27     }
    28     return 0;
    29 }

    Vector(向量): C++ 中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。

    1.文件包含:

    首先在程序开头处加上 #include<vector> 以包含所需要的类文件 vector

    还有一定要加上 using namespace std;

    2.变量声明:

    2.1 例: 声明一个 int 向量以替代一维的数组: vector <int> a; (等于声明了一个 int 数组 a[],大小没有指定,可以动态的向里面添加删除)。

    2.2 例: 用 vector 代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即: vector <int *> a 。同理想用向量代替三维数组也是一样,vector <int**>a; 再往上面依此类推。

    3.具体的用法以及函数调用:

    3.1 得到向量中的元素和数组一样,例如:

     1 vector <int *> a
     2 int b = 5;
     3 a.push_back(b);  //push_back(b)在数组最后添加数据
     4 cout<<a[0];        //输出结果为5
     5 /*使用数组给向量赋值:
     6 vector<int> v( a, a+sizeof(a)/sizeof(a[0]) );
     7 或者:
     8 int a[]={1,2,3,4,5,6,7,8,9};
     9 typedef vector<int> vec_int;
    10 vec_int vecArray(a,a+9);*/
    更多向量内容可以查看:C++ vector 容器浅析
    常用函数:
    • strcpy(s1, s2) -- 复制字符串 s2 到字符串 s1。
    • strcat(s1, s2) -- 连接字符串 s2 到字符串 s1 的末尾。
    • strlen(s1) -- 返回字符串 s1 的长度。
    • strcmp(s1, s2) -- 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
    • strchr(s1, ch) -- 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
    • strstr(s1, s2) -- 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
    •  append() -- 在字符串的末尾添加字符
    •  find() -- 在字符串中查找字符串
    •  insert() -- 插入字符
    •  length() -- 返回字符串的长度
    •  replace() -- 替换字符串
    •  substr() -- 返回某个子字符串 
  • 相关阅读:
    django创建项目,一个简单的登录。
    MySQL下载与安装
    查看拉去代码时候的git账号密码
    Springmvc-组件
    转发与重定向
    springMVC-常用注解
    springMVC-请求参数绑定
    SpringMVC-RequestMapping注解
    JAVA-异常处理
    springMVC-入门案例
  • 原文地址:https://www.cnblogs.com/xiaodangxiansheng/p/10901810.html
Copyright © 2011-2022 走看看