1.3数组

1.定义数组的方式

 

如果写int a[n];而不赋值的话,数组的值是随机的

 

但是把它放到函数外面存储到堆空间,为全局变量而不是局部变量,会全是0

 

想要定义一个数组但是不确定长度,可以定义的时候长度写多一点,比如int a[100] = {1,2,3};int a[10] = {1};指前几个数是你输入的,后面的都是0

 2.旋转数组k次

第一种方式,把初始数组的最后一位取出,然后让数组每一项后移一位,循环k次

 

第二种方式运用reverse方法反转数组

 

 3.算2的N次方

#include<bits/stdc++.h>
using namespace std;
const int N = 3000;
int main(){
    int a [N] = {1};
    int n;
    cin>>n;
    //cout<<pow(2,n)<<endl;
    int m = 1;
    for(int i = 0;i<n;i++){
        int t = 0;
        for(int j = 0;j<m;j++){
            t += a[j]*2;
            a[j] = t%10;
            t/=10;
        }
        if(t){
            a[m] =1;
            m++;//即a[m++]=1;
        }
    }
    for (int i = m-1;i>=0;i--){
        printf("%d",a[i]);
    }
    system("pause");
}

还是很有成就感的2333

4.memset函数,void *memset(void *s, int ch, size_t n);头文件是<cstring>。

(开始初始化的位置,初始化的数字,初始化的字节byte)

1个int是4个byte

#include <bits/stdc++.h>
using namespace std;
int main(){
    int a[10];
    memset(a,0,40);//将a全部转为0
    memset(a,0,sizeof a);//将a全部转为0
    memset(a,1,sizeof a);//不是将a转为1
    for(int i =0;i<10;i++)cout<<a[i]<<" ";
    cout<<endl;
    memset(a,-1,sizeof a);//将a全部转为-1
    for(int i =0;i<10;i++)cout<<a[i]<<" ";
    cout<<endl;
    system("pause");
}

 

 输出的结果如上图。

sizeof函数会返回字节大小,一般用sizeof,后面不用加括号。

5.memcpy函数,复制数组给另一个数组,让b数组复制a数组,就把b数组放在括号第一个,代码如下

    int a[10],b[10];
    for(int i=0;i<10;i++)a[i]=i;

    memcpy(b,a,sizeof a);

    for(int i =0;i<10;i++)cout<<b[i]<<" ";
    cout<<endl;

输出的b数组是0123456789.

posted @ 2021-10-31 21:43  乐池  阅读(38)  评论(0)    收藏  举报