>>183
> 外部変数を変更しないと宣言したのと同じことなんじゃ?

同じじゃないんだ。
void func(const int *x) {}
と書くと、関数func()内で外部変数を変更しないと宣言した以外に、
*xの指す外部変数はconst宣言されている変数だ。
と言う、余分な事も宣言してしまうんだよ。
その結果、

int ivar;
void func(const int *x) {}

void fun2c2(void) {
func(&var);
}
こういうプログラムは、func()の呼び出しで、
引数の型が違うと怒られてしまう。
なぜなら、varがconst intではないからだ。
もともとの質問者の状況はこの状況に近い。

怒られないためには、やりたくはないけど、

void fun2c2(void) {
func((const int *)&var);
}
というキャストが必要。