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

2024-12-18 16:07:51
推荐回答(4个)
回答1:

这里的const关键字只是用来限定filename和mode这两个参数在函数里是不能被改变的,如果试图改变,编译器就会报错.所以你传入的只要是字符串指针就行了.
至于"abcdefg"编译会把它转化成字符指针类型,指向首个字符'a'.
比如char * a="abcdefg";是正确语句

回答2:

这里有两个作用
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类型的指针就可以了。

回答3:

1这里"abcdefg"是字符串类型,与函数要求的const char * 类型匹配;
2mode是指向常量的指针,在函数中不能修改所指对象的值,比如在函数中出现下面的用法是错误的。
strcpy(mode,"hijklmn");//修改了所指对象的值,因此是错误的;若没有const修饰,则是正确的。

回答4:

*)CS_FilehName1,"r");