2015-10-20 102 views
0

我想寫一個通用功能打印任何陣列通地址指針功能

我不明白爲什麼有指針功能不工作和功能沒有指針工作

我也得到警告:計算值不被使用[-Wunused-value] |

這裏是代碼:

#include <stdio.h> 
#include <stdlib.h> 

void prt(int *start,int *x_size,int *i_count); 

void prt2(int *s_tart, int s_ize,int c_ounter); 

int main() 
{ 
    int arr[]= {10,5,32}; 

int x=3; 
int i=0; 

printf("Print using pointers result is:\n"); 

prt(arr,&x,&i); 

printf("Print without using pointers result is:\n"); 

prt2(arr,x,i); 

return 0; 
} 

void prt(int *start,int *x_size,int *i_count) 
{ 
    for(*i_count=0; *i_count<*x_size; *i_count++) 
{ 
    printf("%d\n\n",start[*i_count]); 
} 

} 
void prt2(int *s_tart, int s_ize,int c_ounter) 
{ 
    for(c_ounter=0; c_ounter<s_ize; c_ounter++) 
    { 
     printf("%d\n",s_tart[c_ounter]); 
    } 
} 
+1

'* i_count ++'應該是'(* i_count)++'或'++ * i_count'。你想遞增指向的int,而不是指針。 –

+0

非常感謝 –

回答

0

問題的來源是C中的操作符的「優先」

在「++ /增量​​」操作符具有更高的優先級(處理之前)'*/dereference'運算符

該表達式:'* i_count ++'導致指針遞增,然後解除引用結果指針。

所需的操作是取消引用指針然後遞增目標。

因此表達式應該是:'(* i_count)++',所以解除引用首先發生。

0

* i_count ++表示指針移動到下一個,您希望指針的值增加。

您可以使用(* i_count)++而不是* i_count ++。