读书人

关于const限定指针的有关问题

发布时间: 2013-06-26 14:29:32 作者: rapoo

关于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是指向常量的指针, 指针本身指向的地址可以变, 但是其指向的值, 只能读, 不能改.

读书人网 >C语言

热点推荐