()を付けると()を二重にしないと行けない上にpow()関数の引数は*(arr+n)としないといけません。
全然そんなことないです。両者は連動しません。
C
1#include <math.h>
2#include <stdio.h>
3
4int pw_a1(int *arr, int size, int n) {
5 return ((size) > n) ? pow(*(arr+n), n): -1;
6}
7int pw_b1(int *arr, int size, int n) {
8 return (size) > n ? pow(*(arr+n), n): -1;
9}
10int pw_c1(int *arr, int size, int n) {
11 return size > n ? pow(*(arr+n), n): -1;
12}
13int pw_d1(int *arr, int size, int n) {
14 return (size > n) ? pow(*(arr+n), n): -1;
15}
16
17int pw_a2(int *arr, int size, int n) {
18 return ((size) > n) ? pow(arr[n], n): -1;
19}
20int pw_b2(int *arr, int size, int n) {
21 return (size) > n ? pow(arr[n], n): -1;
22}
23int pw_c2(int *arr, int size, int n) {
24 return size > n ? pow(arr[n], n): -1;
25}
26int pw_d2(int *arr, int size, int n) {
27 return (size > n) ? pow(arr[n], n): -1;
28}
29
30int main(void) {
31 int arr[] = {2, 3, 4, 5};
32
33 printf("%d\n", pw_a1(arr, 4, 2));
34 printf("%d\n", pw_b1(arr, 4, 2));
35 printf("%d\n", pw_c1(arr, 4, 2));
36 printf("%d\n", pw_d1(arr, 4, 2));
37 printf("%d\n", pw_a2(arr, 4, 2));
38 printf("%d\n", pw_b2(arr, 4, 2));
39 printf("%d\n", pw_c2(arr, 4, 2));
40 printf("%d\n", pw_d2(arr, 4, 2));
41
42 return 0;
43}
実行結果は全部同じです。Wandbox
ところで、『nを指定したとき、n番目の数をn乗した数を返す』関数って不思議ですね。