首页 > 其他分享 >c: arry

c: arry

时间:2023-10-29 14:57:19浏览次数:27  
标签:arr int void brief param length arry

 

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


/**
 * @brief 
 * 
 * @param arr 
 * @param length 
 * @param key 
 */
void removenum(int arr[],int length,int key);
/**
 * @brief 
 * 
 * @param arr 
 * @param length 
 */
void printnum(int arr[],int length);

/**
 * @brief 
 * 
 * @param arr 
 * @param length 
 */
void printnum(int arr[],int length)
{
    assert(arr!=NULL);
    for(int i=0;i<length;i++)
    {
        printf("%d\n",arr[i]);
    }
}
/**
 * @brief 
 * 
 * @param arr 
 * @param length 
 * @param key 
 */
void removenum(int arr[],int length,int key)
{

    assert(arr!=NULL);
    for(int i=0;i<length;i++)
    {
        if(key==arr[i])
        {
              for(int j=0;j<length-1;j++)
              {
                arr[i]=arr[j+1];
              }  
              arr[length-1]=0;
              i--;
        }
    }


}


int arr[12] = { 10,20,30,40,50,60,70,80,90,100,110,120 };
int(*parr)[12] = &arr;//==int[12]* parr=&arr;   *parr指向 int arr[12]的数组。数组里面存储的是12个元素的整形数据。
int* pparr = &arr[0];//==int* pparr[12]= &arr[0],数组元素存储的是指针




void show()
{
    printf("sizeof(arr)=%ld\t sizeof(parr)=%ld\n",sizeof(arr),sizeof(parr));//sizeof(arr)=48   sizeof(parr)=8
    //特别注意的是:指针和数组,sizeof是不一样,但是访问元素的时候,可以是相同的形式
    //sizeof(parr)是指针:占用的内存为8个字节是指针固定占用的内存空间。
    //sizeof(arr)是数组:占用的是元素个数总和的空间。
    printf("*arr=%d,parr=%d,*pparr=%d,\n",*arr,*(*parr),*parr);
    printf("arr=%p\t parr=%p\n",arr,parr);//都是指向数组的首地址
    //parr:数组指针指向的是一个数组,准确的说,指向的是一个数组首个元素的地址
    printf("*parr=%p\n",*parr);
    //parr是一个指针指向的是arr数组,arr数组返回的又是数组元素的手地址,所以*parr返回的是arr数组首个元素的地址
    printf("*(*parr)=%d\n",*(*parr));//10
    //*(*parr)先解引用parr得到的是第一个元素的地址,在解引用指针就能获取元素的值
    printf("parr访问第二个元素地址=%p\n",*parr+2);
    printf("arr+1=%p\t parr+1=%p\n",arr+1,parr+1);
    //arr指向的是数组的首地址,+1后表示下一个地址
    //parr:指针指向的是arr的整个数组,parr+1后指向的就是下一个数组首个元素的地址。
    for(int j=0;j<4;j++)
    {

    }
    //遍历
    for(int i=0;i<12;i++)
    {
        printf("第%d个元素的地址=%p\t 第%d个元素的值=%d\n",i,*parr+i,i,*(*parr+i));
    }


}




int main()
{
    printf("geovindu\n");
    printf("hello world!");
    printf("你好,世界\n");


    int arrdu[4][5]={10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200};


    int arrd[3][4]={10,20,30,40,50,60,70,80,90,100,110,120};
    int (*pp)[4]=arrd;
    //printf("%d",(*pp)[0]);
    //printf("%d",(*pp)[1]);
    //printf("%d",*pp[0]);
    //printf("%d",*pp[1]);
    //1.
    printf("1列的首位元素\n");
    for(int k=0;k<3;k++)
    {
          printf(" %d ",*pp[k]); //列的首位元素
    }
    printf("\n2第一行的遍历值\n");
    for(int k=0;k<3;k++)
    {
         printf(" %d ",(*pp)[k]); //第一行的遍历值
    }
    printf("\n3列的首位元素\n");
    //3.
    for(int k=0;k<3;k++)
    {
            printf(" %d ",pp[k][0]); //列的首位元素
    }
    printf("\n4第一行的遍历值\n");
    //4 第一行的遍历值
    for(int k=0;k<4;k++)
    {
            printf(" %d ",(*pp)[k]);
    }

    printf("*((*pp)+1)=%d\n",*((*pp)+1));
    printf("*pp[1]=%d\n",*pp[1]);  //50
    printf("(*pp[1])+1=%d\n",(*pp[1])+1); //51
    printf("*(*pp+1)=%d\n",*(*pp+1));
    printf("*(*arrd+1)=%d\n",*(*arrd+1));
    printf("*arrd[1]=%d\n",*arrd[1]); //50
    printf("*arrd[1]=%d\n",*arrd[1]); //50
    

    printf("\n6遍历二维数组\n");
    int *dup;
    dup=arrd[0];
    for (int i = 0; i < sizeof(arrd) / sizeof(int); i++)
    {
        //printf("%d ",&arrd[i]);
        //p = arr[i];
        printf("%d ",*dup++);
    }
    printf("\n7遍历二维数组\n");
    //6 遍历二维数组
    for(int j=0;j<3;j++)
    {   
        
        for(int k=0;k<4;k++)
        {
            printf(" %d ",pp[j][k]);
        }
        printf("\n");
    }
    printf("\n");


    show();

    char b[]="agbdkfjdkajfkdasjfdkla";
    printf("%ld",sizeof(b));
    int c=sizeof(b)/sizeof(b[0]);
    printf("%d",c);
    for (int i = 0; i < c; i++)
    {
        printf("i=%d,\t b=%c,\b 内存地址=%p\n",i,b[i],&b[i]);
    }
    

    int num[5]={1,2,3,4,5};

    removenum(num,5,3);
    printnum(num,5);


    system("pause");
    return 0;
}

  

标签:arr,int,void,brief,param,length,arry
From: https://www.cnblogs.com/geovindu/p/17795874.html

相关文章

  • Harry Potter RPG_1
    RPG——HarryPotter博主最近迷上了《HarryPotter》So我制作了一款RPG对话模拟游戏,目前主线以进行到了分院以后:有兴趣的小伙伴可以看看,能点个关注就更好了\(>_<)/以下是程序的准备#include<bits/stdc++.h>#include<conio.h>#include<windows.h>usingnam......
  • arry数组的一些方法【转】
    1.数组头部插入数据数据头部插入数据,你是否还在用JS提供的unshift()方法letarr=[1,2,3]arr.unshift('我是头部插入的数据')console.log(arr)//=>['我是头部插入的数据',1,2,3]现在21世纪了,得用新的思路去解决问题,考虑到性能的问题,现在我们可以采用以下的办法......
  • Cost Of Carry
     Definitionof'CostOfCarry'Costsincurredasaresultofaninvestmentposition.Thesecostscanincludefinancialcosts,suchastheinterestcostsonbonds,interestexpensesonmarginaccountsandinterestonloansusedtopurchaseasecu......
  • 【whale-starry-stl】01天 list学习笔记
    一、知识点1.std::bidirectional_iterator_tagstd::bidirectional_iterator_tag是C++标准库中定义的一个迭代器类型标签,用于标识支持双向遍历的迭代器类型。在C++中,迭代器是一种泛型指针,用于遍历容器中的元素。迭代器类型标签用于标识迭代器的特性,从而在算法中选择合适的......
  • np.array和np.ndarry 的区别
    np.array和np.ndarray都是NumPy中用于创建多维数组的函数。np.ndarray是NumPy中的多维数组类,它是一种可变的数组,可以通过修改数组中的元素来改变其内容。使用np.ndarray创建的数组必须指定形状、元素类型和存储器位置等参数。例如,可以使用以下代码创建一个2x2的整数数组:a=np.n......
  • CF1286F Harry The Potter
    CF1286FHarryThePotter首先答案上界为\(n\),就是对每个点用一次操作1。那么我们现在的思维模式就是利用操作2来减少操作1的次数。不难发现,如果操作2的点之间......
  • vulnhub靶场之HARRYPOTTER: NAGINI
    准备:攻击机:虚拟机kali、本机win10。靶机:HarryPotter:Nagini,下载地址:https://download.vulnhub.com/harrypotter/Nagini.ova,下载后直接vbox打开即可。知识点:shell反弹、......
  • mt_Day4:常用API(String,ArryList)
    常用API(String,ArryList)String1.StringString对象不可变的原因:1.String变量每次的修改其实都是产生并指向了新的字符对象2.原来的字符对象都是没有改变的,所以称为不可......
  • laravel生成PDF使用插件barryvdh/laravel-dompdf及中文乱码问题解决
    使用1.composer安装composerrequirebarryvdh/laravel-dompdf2.发布配置文件,生成的配置文件config/dompdf.php,也可选择忽略此步骤phpartisanvendor:publish......
  • 读取mnist灰度图片变成nparry并和已有的数据集连接在一起
    读入图片并处理把图片读入,变成nparray之后,经过标准化处理直接和原来的mnist数据连在一起即可importcsvimportrandomimportnumpyasnpimporttensorflowastffro......