将地址传递给指针函数

时间:2015-10-20 01:20:54

标签: c pointers

我想编写一个通用函数来打印任何数组

我不明白为什么带指针的函数不起作用而没有指针的函数可以工作

我也收到警告:未使用计算值[-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]);
    }
}

2 个答案:

答案 0 :(得分:0)

问题的根源是&#39;优先级&#39; C中的运营商。

&#39; ++ / increment&#39;运算符具有更高的优先级(之前处理过)&#39; * / dereference&#39;操作

此表达式:&#39; * i_count ++&#39;导致指针递增,然后取消引用结果指针。

所需的操作是取消引用指针然后递增目标。

因此,表达式应为:&#39;(* i_count)++&#39;所以取消引用首先出现。

答案 1 :(得分:0)

* i_count ++表示指针移动到下一个,你希望指针的值增加。

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