c++参数类型问题FILE *fopen( const char *filename, const char *mode );

文件操作的程序,查MSDN中fopen函数,这样描述的
FILE *fopen( const char *filename, const char *mode );
我基础忘了很多,我想问问这个const char *类型为什么在程序里直接写字符串也可以,
比如fopen("abcdefg","w"); 这里"abcdefg"是字符串类型,能和函数要求的const char * 类型匹配吗?
还有这个函数定义里,指向常量的指针,在这里有什么作用,不用const有区别?
小弟多谢指教。

这里的const关键字只是用来限定filename和mode这两个参数在函数里是不能被改变的,如果试图改变,编译器就会报错.所以你传入的只要是字符串指针就行了.
至于"abcdefg"编译会把它转化成字符指针类型,指向首个字符'a'.
比如char * a="abcdefg";是正确语句
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-03
这里有两个作用
1. const限定一个变量不允许被改变。
2. 使用const在一定程度上可以提高程序的安全性和可靠性,
另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
//-------------------------------------------------------------------------------------------------------------------
FILE *fopen( const char *filename, const char *mode );
这里的const 含义也是一样的。
一是 const char *保护实参指针指向的数据不被意外改写。
二则一目了然的让你知道参数的类型,方便阅读。

const char *filenam;
从右往左看。
1.首先*filenam是个指针。
2.接着往左看char *filenam 是个char类型的指针。
3.继续往左看const char *filenam这个char类型的指针指向一个const 常量。
合起来就是 这是一个指向常量的char类型指针。
传入两个char类型的指针就可以了。
第2个回答  2011-03-03
1这里"abcdefg"是字符串类型,与函数要求的const char * 类型匹配;
2mode是指向常量的指针,在函数中不能修改所指对象的值,比如在函数中出现下面的用法是错误的。
strcpy(mode,"hijklmn");//修改了所指对象的值,因此是错误的;若没有const修饰,则是正确的。
第3个回答  2011-03-05
*)CS_FilehName1,"r");
相似回答