File *和Char *相同还是不同?

时间:2018-07-27 19:28:58

标签: c pointers

当我了解了指针时,发现char*是指针的运算符,但是当我在线观看教程时,就会发现人们使用file*。因此,我想知道是否有理由在一个之上使用另一个。

5 个答案:

答案 0 :(得分:7)

在C语言FILE*char*中是完全不同的两件事。

FILE*是指向FILE结构的指针,该结构表示使用fopen之类的文件打开的文件。一整套f函数可以与它们交互,例如freadfclose

char*是指向字符的指针,用C术语表示是“字符串”或“缓冲区”。 str函数家族处理这些函数,例如strncpystrcmp等。

除了指针都是指针外,它们根本没有相似之处,但是鉴于您在谈论C,指针基本上是C的哲学,并且无处不在。

现在C被认为是强类型化语言,这意味着任何给定的函数对参数和返回类型都具有极其特定的期望。如果尝试提供指向FILE*的函数的char*指针,则会出现编译错误。它们不兼容,并且不能互换。

答案 1 :(得分:4)

C中的指针指向特定类型。 char *FILE * 不同

因此,char *是指向char的指针,FILE *是指向FILE的指针,依此类推。您可以使用任何适合您的对象在指向。

答案 2 :(得分:0)

  

当我了解了指针时,得知char *是指针的运算符

表示变量是指针的符号只是*。您可以使用该符号来声明许多不同种类的指针。例如,char*是指向char的指针。 FILE*是指向FILE的指针。就像其他人回答的那样,它们都有完全不同的用途。

答案 3 :(得分:0)

  

当我了解了指针时,发现char*是指针的运算符,但是当我在线观看教程时,就会发现人们在使用file*

char*(更常见的拼写为char *)不是运算符,而是类型。具体来说,它是指向char的指针的类型(通常,但不一定是它们数组中的第一个)。假设将file定义为类型,则file*也是一种类型:指向file的指针的类型(但是您的意思是FILE?)。这两种指针类型不同,并且不能互换,尽管您可以在它们之间进行转换。

  

所以我想知道是否有理由在一个之上使用另一个。

绝对!当您想要指向char *的指针时,可以使用char,而当您想要指向file *的指针时,可以使用file。前者是处理C字符串的类型。 file不是内置类型,因此我只能推测其用途或从其派生的指针类型,但肯定与char *所用的东西不同。

答案 4 :(得分:0)

char *表示指向某些带符号字符的指针。 FILE *或file *表示指向用于文件io的结构的指针。搜索常用的头文件,例如“ stdio.h”,“ stdlib.h”以获取定义。 请记住,指针仅表示地址。