簡體   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