• 指针和数组


    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>

    int main01()

    {

    //数组名是一个常量,不允许被赋值;数组名是数组元素首地址

      int arr[]={100,2,3,4,5,6,7,8,'a','b','c'};

      //arr=100;//err

      int*p;

      p=arr;

      printf("%p ",p);

      printf("%p ",arr);

      *p=100;

      printf("%d ",*p);//100

      p=p+1;//或p++;

    //两个相邻的数组地址相差一个int类型大小

      printf("%p ",arr);//0053FA00

      printf("%p ",p);//0053FA04

      for(int i=0;i<10;i++)

      {

        //printf("%d ",arr[i]);//100,2,3,4,5,6,7,8,97,98,

        //printf("%d ",p[i]);//2,3,4,5,6,7,8,97,98,99

        //printf("%d ",*arr);//100,100,100,100,100,100,100,100,100,100;*arr:打印值;arr:打印地址

    //指针类型变量+1等于内存地址+sizeof(int)

        //printf("%d ",*(arr+i));//arr+4:打印地址;*(arr+4):0+4=4,打印值5

        

        //printf("%d ",*(p+i));//2,3,4,5,6,7,8,97,98,99

        //printf("%d ",*p++);//2,3,4,5,6,7,8,97,98,99

      }

      printf("%p ",arr);//0080F984;arr与p相差40

      printf("%p ",p);//0080F9AC;数组下标越界,属于野指针

    //两个指针相减,得到的结果是两个指针的偏移量(步长) ;所有指针类型相减结果都是int类型的

      int step=p-arr;

      printf("%d ",step);//1

      return EXIT_SUCCESS;  

    }

    int main02()

    {

      int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

      //指向数组的指针;p是变量,可以改变;arr是常量,不可改变

      int*p = arr;

    //p是一个指针,4个字节大小;arr是一个数组,40个字节大小

      printf("指针类型大小:%d ", sizeof(p));

      printf("数组大小:%d ", sizeof(arr));

      return 0;

    //结果

    }

    //数组作为函数参数会退化为指针,丢失数组的精度(数组元素个数)int*arr

    void BubbleSort(int arr[],len)

    {

      for(int i=0;i<len-1;i++)

      {

        for(int j=0;j<len-1-i;j++)

        {

         /* if(arr[j]>arr[j+1]

          {

            int temp=arr[j];

            arr[j]=arr[j+1];

            arr[j+1]=temp;

          }    */

          if((*arr+j)>*(arr+j+1));

          {

            int temp=*(arr+j);

            *(arr+j)=*(arr+j+1);

            *(arr+j+1)=temp;

          }

        }

      }

    }

    int main()

    {

      int arr[] = { 9,1,5,6,3,8,10,2,7,4 };

      BubbleSort(arr, 10);

      for(int i=0;i<10;i++)

      {

        printf("%d ",arr[i]);

      }

      return 0;

    //结果

    }

  • 相关阅读:
    死磕Spring之IoC篇
    死磕Spring之IoC篇
    死磕Spring之IoC篇
    死磕Spring之IoC篇
    Linux解决 -bash: nc: command not found问题
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
    flink配置参数
    Joins in Continuous Queries
    Linux中的tar命令
    Table API&SQL和常见问题总结
  • 原文地址:https://www.cnblogs.com/wanghong19991213/p/13547173.html
Copyright © 2020-2023  润新知