>>555 ありがとうございます。
ちょっとテストしてみたのですが

#include <stdio.h>
void add (int *p) {
*p += 10;
*(p+1) += 10;
}
int main (void) {
int a = 10, b = 20;
printf ("変数aの値は%d:アドレスは%p¥n", a, &a);
printf ("変数bの値は%d:アドレスは%p¥n", b, &b);
add (&a);
printf ("変数aの値は%d:変数bの値は%d¥n", a, b);
return 0;
}

変数 aと bのアドレスがとなりあってる場合、関数によって配列でもないのに変数 bの値が書き換えられてしまいます
仮に、配列を扱う関数で、配列の後ろに関係ない変数があった場合、
意図せず変数まで書き換えてられてしまう可能性もあると思うのですが、
そういうのは自分で注意するべきなのでしょうか?