const有关问题
const问题
#include<iostream>
using namespace std;
void Print(char *p);
int main()
{
char *p="dfgfg";
Print(p);
return 0;
}
void Print(char *p)
{
cout<<p;
}
p是指向常变量的指针吗?如果是的话,那么为什么能调用void Print(char *p)
函数。。。。形参是指向指向非const变量的指针,而实参是指向const变量的指针啊。。。应该是非法的
如果不是指向常量的指针的话,那我在Print函数里为什么不能通过指针P改变它所指向的变量的值?
求大神教我。。。
------解决方案--------------------
main中的变量p是指向常量字符串的指针
Print中的p是一个字符指针,可以传递给它字符串指针,因为它们的类型都是一样的。这里并没有规定它不能接受一个指针常量参数。
常量只是不能被更改,不是不能被传递。所以Print函数接受p指针没有半点问题——它又没有试图更改p所指向的内容。如果你想要在里面改变它,那你就会发现系统不肯干。
------解决方案--------------------
#include<iostream>
using namespace std;
void Print(char *p);
int main()
{
char *p="dfgfg";
Print(p);
return 0;
}
void Print(char *p)
{
cout<<p;
}
p是指向常变量的指针吗?如果是的话,那么为什么能调用void Print(char *p)
函数。。。。形参是指向指向非const变量的指针,而实参是指向const变量的指针啊。。。应该是非法的
如果不是指向常量的指针的话,那我在Print函数里为什么不能通过指针P改变它所指向的变量的值?
求大神教我。。。
------解决方案--------------------
main中的变量p是指向常量字符串的指针
Print中的p是一个字符指针,可以传递给它字符串指针,因为它们的类型都是一样的。这里并没有规定它不能接受一个指针常量参数。
常量只是不能被更改,不是不能被传递。所以Print函数接受p指针没有半点问题——它又没有试图更改p所指向的内容。如果你想要在里面改变它,那你就会发现系统不肯干。
------解决方案--------------------