[英]how to pass a pointer to a function and create a matrix there with the pointer as the starting address?
[英]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.