程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C 語言:返回兩個數組中第一個相同元素的指針(我用了loop 、goto loop標簽),gotoloop

C 語言:返回兩個數組中第一個相同元素的指針(我用了loop 、goto loop標簽),gotoloop

編輯:關於C語言

C 語言:返回兩個數組中第一個相同元素的指針(我用了loop 、goto loop標簽),gotoloop


//

//  main.c

//  Pointer_search

//

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

//  Copyright (c) 2015年 bjsxt. All rights reserved.

//  要求:通過指針查找,實現比較兩個有序數組中的元素,輸出兩個數組中的第一個相同的元素值。

 

#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;

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved