C 语言:返回两个数组中第一个相同元素的指针(我用了loop 、goto loop标签)

本文介绍了一个通过指针实现的算法,该算法用于查找两个已排序数组中的首个相同元素,并返回其值。提供了完整的C语言代码示例及解析。

//

//  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\n",*pt);

    else

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

    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;

}

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4703001.html,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值