2017-02-27 89 views
2

我正在處理此迴文函數,並試圖對其進行修改,以便我可以發送數組中的特定位置作爲起點。 下面是代碼:將特定數組元素的地址傳遞給函數

#include<iostream> 
using namespace std; 
bool pali(int [],int size); 
int main() 
{ 

    int n[] = {3, 5, 9, 4, 8, 2, 8, 4, 7, 10}; //just a sample array for testing 
    int length = 10; 
    pali(n,length); 
} 

bool pali(int a[],int size) 
{ 
    int flag=0; 
    int i=0; 
    while(flag==0 && i<size){ 
     if(a[i]==a[size-i-1]){ 
      flag=0; 
      i++; 
     } 

     else{ 
      flag=1; 
     } 
    } 
    if(flag==0) 
     return true; 
    else 
     return false; 
} 

如何這段代碼進行修改,以採取特定元素的地址。因此,如果我發送的數組地址的位置在3處大小爲5,它將返回true(如在4,8,2,8,4中)。但是,如果它發送了另一個不是迴文的地址和大小,它將返回false。

+0

你已經有2個參數在你的函數中,只需使用相同的方法添加2個以上? –

+0

如果您使用C++,請嘗試使用'std :: vector'而不是C風格的數組加上'size'對。還避免使用名稱空間標準。它旨在保持獨立,以避免與您自己的代碼發生衝突。如果你想返回一個布爾值,你甚至可以'返回標誌== 0'或者'return!flag',或者甚至更好的方法是使'bool flag = true',顛倒含義並且避免強制轉換。 – tadman

+7

@the_martian只要寫pali(n + 3,5); –

回答

2

指針可以指向數組中的任何元素(假設指針的兼容類型)。就像它可以指向數組的第一個元素一樣,它也可以指向另一個元素。

指針運算可用於計算數組元素的地址。將整數i添加到指針將導致指向最初指向的對象的第i個連續同胞。知道數組的名稱將衰減到指向第一個元素的指針,我們可以使用表達式n + 3計算數組n索引3處元素的地址。

因此,該功能無需修改,因爲您已經可以將其傳遞給任何元素的地址。

+0

太棒了,效果很棒! –