zoukankan      html  css  js  c++  java
  • C 语言:返回两个数组中第一个相同元素的指针(我用了loop 、goto loop标签)

    //

    //  main.c

    //  Pointer_search

    //

    //  Created by ma c on 15/8/2.

    //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值。

     

    #include <stdio.h>

    int *searchSameElement(int *a,int *b,int len1,int len2);

    int main(int argc, const char * argv[])

    {

        int a[] = {5,11,8,6,7,10};

        int b[] = {80,9,14,8,14,19,4};

     

    //下面这种计算数组长度的方法在函数内部实现比较通用,但是,如果将其当做参数传递给外部函数时,数组名会退化成指针,此时下面计算数组长度的方法就不适用了。

        int len1 = sizeof(a)/sizeof(a[0]);//计算数组a的长度

        int len2 = sizeof(b)/sizeof(b[0]);//计算数组b的长度

        

        int *pt = searchSameElement(a,b,len1,len2);//返回第一个相同的值地址

        if(pt)

            printf("%d ",*pt);

        else

            printf("the same number don not find! ");

        return 0;

    }

    int *searchSameElement(int *a,int *b,int len1,int len2)

    {

        int *temp = a;//初始化临时指针,防止temp成为野指针

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

        {

           for(int j=0;j<len2;j++)

           {

              if(*(a+i)==*(b+j))

              {

                temp = a+i;

                goto loop;

                 //此处表示找到第一个相同元素,跳转到结尾,return a+i

              }

              if(j==len2)

              {

                break;//表示第一个外循环数在内循环没有找到,跳到外循环继续寻找

              }

           }

           if(i==(len1-1))

           {

              temp = 0;

              goto loop;

              //此处表示内外循环没有找到第一个相同元素,跳转到结尾,return 0

           }

        }

       loop: return temp;

    }

  • 相关阅读:
    html----有关图像
    前端开发初学者
    angular js 正序倒叙
    viewpager无线轮播获取网络图片
    angular js 球星
    angular js shopping
    angular js 公告墙
    Android 常用正则表达式
    Android 内存泄漏
    TCP/IP,必知必会的
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4703001.html
Copyright © 2011-2022 走看看