当我了解了指针时,发现char*
是指针的运算符,但是当我在线观看教程时,就会发现人们使用file*
。因此,我想知道是否有理由在一个之上使用另一个。
答案 0 :(得分:7)
在C语言FILE*
和char*
中是完全不同的两件事。
FILE*
是指向FILE
结构的指针,该结构表示使用fopen
之类的文件打开的文件。一整套f
函数可以与它们交互,例如fread
和fclose
。
char*
是指向字符的指针,用C术语表示是“字符串”或“缓冲区”。 str
函数家族处理这些函数,例如strncpy
和strcmp
等。
除了指针都是指针外,它们根本没有相似之处,但是鉴于您在谈论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”以获取定义。 请记住,指针仅表示地址。