2015-10-26 46 views
-1

它是一個簡單的插入和顯示元素,我已經完成了一個數組代碼。陣列指針比較錯誤

'  

#include<stdio.h> 
int insert(int *arr); 
int display(int *arr); 
int main() 
{ 

int MAX=5; 
int arr[MAX]; 
insert(arr); 
display(arr); 
} 
int insert(int *arr) 
{ 
int n,i; 
printf("Enter how many elements"); 
scanf("%d",&n); 
for(i=0;i<n;i++) 
     { 
      printf("Enter value at arr[%d]\n",i); 
      scanf("%d",&arr[i]); 
     } 
return *arr; 
} 


int display(int *arr) 
{ 
     int i; 
     printf("The values are::"); 
     for(i=0;arr[i]!=NULL;i++)//This loop is giving some trouble 
     { 
       printf("\n a[%d]->%d \n",i,arr[i]); 
     } 
     return *arr; 
} 

' 

輸出 :: 在函數 '顯示器': prog.c中:33:24:錯誤:用於(ⅰ指針和整數 之間的比較= 0;常用3 [I] = NULL; i ++) ^ 這是我無法解決的錯誤。

+1

當我看到格式不正確時,我放鬆了閱讀代碼的熱情。嘆。 – Haris

+0

當我看到在SO代碼塊中沒有任何意義的行號時,我放鬆了閱讀代碼的熱情。 –

+0

我是這個網站的新手。不知道有多少代碼必須在這裏呈現。 – Oswarld

回答

1

您有多個東西在你的代碼將被糾正,但你得到的錯誤是由於pointer(NULL)之間的比較和intarr[i]

for(i=0;arr[i]!=NULL;i++) 

你的整數數組arr沒有任何NULL元素到底哪些可以比較。也許你在stringinteger arrays之間感到困惑。

在代碼中可以更改的另一件事是函數的返回類型insert()delete()。你沒有收到返回值,因此最好不要讓它們失效。

甲建議

返回ninsert()功能,它接收在main()。然後將其與陣列一起發送到display()函數,然後在for循環中使用該函數。

知道傳遞給函數的數組中元素數量的最佳方法是將其與數組一起發送到該函數。

0
' 
#include<stdio.h> 
#include<stdlib.h> 
int MAX=5,i,pos,val; 
int display(int *arr); 
int main(void) 
{ 
    int arr[MAX]; 
    display(arr); 
} 

int display(int *arr) 
{ 
    printf("The values are::"); 
    for(i=0;i<MAX;i++) 
    { 
      printf("\n a[%d]-->%d ",i,arr[i]); 
    } 
     return *arr; 
}' 

要避免使用太多的變數我在code.Making它持續的全球性使用「最大」的,它的工作!