Похоже, вы получаете некоторые из запутанных там типов. В вашем примере вы устанавливаете указатели на новое значение, а не на значение указанных указателей.
Первое должно быть:
*total += pA[i];
В то время как второе должно быть:
*avg = (*total/lines);
Фактически, вы, вероятно, захотите использовать разделение с плавающей запятой на вторую ошибку (некоторые компиляторы печально известны использованием целочисленного divison в неожиданных местах):
*avg = (*total/(double)lines);
You'll still be getting errors if you do it like that, however. For example &pA[i] > ...
will result in a pointer comparison, i.e. the address of the pointers will be compared. Most likely not what you want.