通常,字符串操作函数原型中,都会在形参前面加上const修饰符,表示此指针不能用于修改字符串的值
比如:char *strcpy(char *strDest, const char *strSrc)
但是可不可以通过 在函数里定义一个指针指向strSrc,来改掉字符串的值呢?
给出以下代码:
#include <STDIO.H>
#include<stdlib.h>
void fuc(const char *p)
{
char *q = p;
*q='b';
}
int main()
{
char p[]="abcd";
fuc(p);
puts(p);
system("pause");
return 0;
}
vc6.0下:
结果显示可以
换成vs2013:
报出以下错误。
但是,使用强制类型转化后:
结果:
说明,函数参数里添加const修饰指针,并不说明此函数就不能修改 指针指向的内容,只是说明 函数不能通过被const修饰的指针改变指向的内容。