两个数组拼合且有序,指针部分总结。

#include <stdio.h>
#include <stdlib.h>

#define M 7
#define N 3

int main()
{
    int a[M]={1,3,5,7,9,11,20};
    int b[N]={2,6,8};
    int c[M+N]={0};

    int i=0; //a的下标
    int j=0; //b的下标
    int zu_he=0; //组合下标

    while(i<M&&j<N)
    {    
        //谁小谁谁放进去自身并且增加
        if(b[j]<a[i])
        {
            c[zu_he++]=b[j++]; 
        }

        else
        {
            c[zu_he++]=a[i++];
        }
        
    }

    //谁先跳出来,另一个就继续接力
    if(i == M)
        while(j < N)
            c[zu_he++]=b[j++];

    if(j == N)
        while(i < M)
            c[zu_he++]=a[i++];

    for(int i=0;i<M+N;i++)
        printf("%d
",c[i]);
    system("pause");
}

//数组int array[4][3] array+1加了16个字节(int[3] array[4]) array[1]+1加了4个字节(
*(array+1)+1)
) /*指针部分总结*/ //内存是以字节为单位进行编址的,不是以位(bit) //&--reference 引用/取地址符,取出的地址是有类型的 如int a &a==(int*)(0x a的十六进制代码) //指针的本质有类型的地址 /* 1、大小端是不同的对于数据在内存地址中的存放方式,不同的处理器(平台)的数据存储方式是不同。的如果 实现跨平台通信则大小端是不能忽视的问题。 大端模式:数据的高位存储在内存的低字节。ARM/PowerPC等处理器采用大端模式 小端模式:数据的地位存储在内存的低字节。Intel架构处理器采用小端模式。 如一个数据:0x12345678;对应内存地址是0x00~0x03。 大端模式 小端模式 地址:0x00 0x01 0x02 0x03 地址:0x00 0x01 0x02 0x03 数据:0x12 0x34 0x56 0x78 数据:0x78 0x56 0x34 0x12 */
原文地址:https://www.cnblogs.com/huxiaobai/p/10429403.html