关于const限定指针的问题
我将const 修饰词放到了外面使程序不能通过指针修改其值,但指针指向的地址应该是可以改变的啊?
为什么我编译的时候,会出现警告:different ‘const ’ qualities.
void sort (const struct fly * p[], int n)
{
struct fly * temp;
int i, j;
for (i = 0; i < n - 1; i++)
for (j = i; j < n; j++)
{
if (p[i]->flag == TAKEN && p[j]->flag == TAKEN &&
strcmp (p[i]->lname, p[j]->lname) > 0)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
[解决办法]
第3行改为: const struct fly * temp;
[解决办法]
p[i] = p[j];
p[j] = temp;
你这两句尝试修改其值, 肯定会报错的.
因为p是指向常量的指针, 指针本身指向的地址可以变, 但是其指向的值, 只能读, 不能改.