• C语言指针


    1.指针用法事例
    #include <stdio.h>

    int main()
    {
     int var=10;
     int *ptr_var;
     //指针ptr_var指向变量var
     ptr_var = &var;
     //输出变量var的值和var的地址
     printf("var的值是:%d\n", var);
     printf("var的地址是:%x\n", &var);
     //输出ptr_var的地址
     printf("ptr_var的地址为:%x\n", &ptr_var);
     //输出指向变量的指针, 输出变量var的值和存储地址
     printf("var的值是:%d\n", *ptr_var);
     printf("var的地址是:%x\n", ptr_var);

     return 0;
    }


    2. 通过指针间接将一个变量值赋给另一个变量
    #include <stdio.h>

    int main()
    {
     int num1=50, num2=100;
     int *ptr1, *ptr2;

     //ptr1指针指向变量num1
     ptr1=&num1;
     printf("num1变量的值是:%d\n", *ptr1);
     printf("num1变量的地址是:%d\n", ptr1);

     ptr2=&num2;
     printf("num2变量的值是:%d\n", *ptr2);
     printf("num2变量的地址是:%d\n", ptr2);

     //将ptr1指向的变量值num1也让ptr2指向
     *ptr2=*ptr1;

     printf("重赋值后的num2的值是:%d\n", *ptr2);
     printf("重赋值后的num2的地址是:%d\n", ptr2);

     return 0;
    }


    3.使连个指针指向同一个变量
    #include <stdio.h>

    int main()
    {
     int num1=100;
     int *ptr1, *ptr2;

     ptr1=&num1; //ptr1指针指向num1
     printf("num1的地址是:%x\n", ptr1);

     ptr2=ptr1;
     printf("ptr2的地址是:%x\n", ptr2);

     return 0;
    }


    4.比较两个指针是否相等的运算
    #include <stdio.h>

    int main()
    {
     int value=10;
     int *ptr1, *ptr2;

     ptr1=&value; //ptr1指针指向num1
     value+=53;
     
     ptr2=&value;
     if(ptr1==ptr2)
     {
      printf("两个指针指向同一个地址.\n");
     }
     else
     {
      printf("两个指针指向不同的地址.\n");
     }

     return 0;
    }


    5.指向数组的指针
    #include <stdio.h>

    int main()
    {
     int data[]={5,10,44,25,15};
     int i=0;
     int *ptr;

     ptr=data; //ptr指向数组第一个元素data[0];
     while(i<5)
     {
      printf("第%d个元素的地址是:%x, 变量值是:%d\n", i+1, ptr, *ptr);
      i++;
      ptr++;
     }
     

     return 0;
    }


    6.通过指针检查一串字符是否为回文字符
    #include <stdio.h>

    int main()
    {
     char name[5]={'M','A','D','A','M'};
     char *start, *end;
     int flag=1;

     start=name;
     end=name+4;

     while(start<=end)
     {
      if(*start != *end)
      {
       flag=0;
      }
      start++;
      end--;
     }

     if(flag)
     {
      printf("该字符是回文字符\n");
     }
     else
     {
      printf("该文不是回文字符\n");
     }
     
     return 0;
    }

    7.编写一个使指针交换两个数的值。

    #include<stdio.h>

    void main()
    {
     int num1=2,num2=5;
     int *ptr1,*ptr2;
     int temp;

     ptr1=&num1;
     ptr2=&num2;

     temp=*ptr1;
     *ptr1=*ptr2;
     *ptr2=temp;

     printf(" num1=%d/n num2=%d/n",num1,num2);
    }


    9. 使用指针实现冒泡排序
    #include <stdio.h>
    #include <stdlib.h>
    #define M 20

    int main()
    {
     int arr[M];
     int i, j, tmp, *ptr;

     for(i=0; i<M; i++)
     {
      arr[i] = rand()%100;
     }

     printf("排序前:\n");
     for(i=0; i<M; i++)
      printf("%d\t", arr[i]);

     printf("\n排序后:\n");
     for(i=0, ptr=&arr[i]; i<M-1; i++, ptr++)
     {
      for(j=i+1; j<M; j++)
      {
       if(*ptr<*(ptr+j-i))
       {
        tmp=*ptr;
        *ptr=*(ptr+j-i);
        *(ptr+j-i)=tmp;
       }
       /*
       if(arr[i]>arr[j])
       {
        tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
       }
       */

      }
     }

     for(i=0; i<M; i++)
      printf("%d\t", arr[i]);

     return 0;
    }

  • 相关阅读:
    npm 报错 : `Error: ENOENT: no such file or directory, mkdir D:\`
    weex中根据返回图片的大小,进行等比缩放展示
    weex中怎么动态循环产生输入框?字段名根据后端返回的数据而定
    hdu 2473 Junk-Mail Filter(并查集)
    cf2A Winner(implementation)
    hdu 5185 Equation(分析+DP)
    hdu 5183 Negative and Positive (NP)(STL-集合【HASH】)
    hdu 2059 龟兔赛跑(DP)
    hdu 1978 How many ways(DP)
    hdu 2577 How to Type(DP)
  • 原文地址:https://www.cnblogs.com/storys/p/2910317.html
Copyright © 2020-2023  润新知