File*和Char*是相同还是有区别?

Rat*_*sk1 3 c pointers

当我了解到指针的指针char*是指针的操作符,但当我在线查看教程时,我看到人们使用file*.所以我想知道是否有理由使用其中一个.

tad*_*man 7

在C FILE*char*两个完全不同的东西.

FILE*是一个指向FILE结构的指针,该结构表示用类似的东西打开的文件fopen.有一整套f功能与这些功能相互作用,比如freadfclose.

char*是一个指向字符的指针,也就是说用C语言表示"字符串"或"缓冲区".该str系列函数处理这些,像strncpystrcmp和这样.

这些都不是类似的,除了它们都是指针,但鉴于你在谈论C,指针基本上是C哲学并且是无所不在的.

现在C被认为是强类型语言,这意味着任何给定的函数对参数和返回类型都有非常具体的期望.如果您尝试提供FILE*指向函数的指针,则期望char*您收到编译错误.它们不兼容,不可互换.

  • Nit:`char*`不是*string*.它可能指向字符串的第一个字符,或者它可能指向不创建字符串的字符序列中的第一个字符,或者它可能指向不是较大序列的一部分的单个字符.是的,当我们使用字符串时,我们通常使用`char*`表达式,但这并不意味着`char*`*是*字符串. (2认同)
  • 严格来说,`FILE`是一种不透明的类型 - 它可以是任何东西.一种可能性是数据结构.它可以是任何事情. (2认同)