繁体   English   中英

将地址传递给指针功能

[英]Pass address to pointer function

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

我不明白为什么带指针的功能不起作用而带指针的功能不起作用

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

问题的根源是C中运算符的“优先级”。

'++ / increment'运算符具有更高的优先级(在* / dereference'运算符之前处理)

该表达式:'* i_count ++'导致指针递增,然后取消对结果指针的引用。

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

因此,表达式应为:'(* i_count)++',因此首先进行取消引用。

* i_count ++表示指针移至下一个,您希望指针的值增加。

您可以使用(* i_count)++代替* i_count ++。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM