我想编写一个通用函数来打印任何数组
我不明白为什么带指针的函数不起作用而没有指针的函数可以工作
我也收到警告:未使用计算值[-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]);
}
}
答案 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 ++。