单个函数内结构体变量未声明错误求助(附完整代码)
问题分析与修复方案
我帮你找到了问题所在!你遇到的这个“变量未声明”错误其实是个语法小坑,不是真的变量没声明~
具体错误点
在searchSentences函数里,你声明了word *theWord——这是一个指向word结构体的指针,但在打印匹配结果的语句中,你错误地用了.来访问它的成员:
printf("%s found in line %d position %d\n", word, currentSentence->lineNum, theWord.wordPos);
在C语言里,指针类型的结构体必须用->访问成员,.是给普通结构体变量用的。这里theWord是指针,你用.的话,编译器会误以为它是个普通结构体变量,自然找不到对应的wordPos成员,于是抛出了类似“变量未声明”的错误提示。
修复方法
把上面那行代码改成用->访问成员就好了:
printf("%s found in line %d position %d\n", word, currentSentence->lineNum, theWord->wordPos);
小建议
以后写C代码的时候,记得区分两种成员访问方式:
- 普通结构体变量:
结构体变量名.成员名 - 结构体指针:
结构体指针名->成员名(等价于(*结构体指针名).成员名)
另外,编译代码时可以加上-Wall选项,编译器会给出更详细的警告信息,能更快定位这类小错误哦~
内容的提问来源于stack exchange,提问作者Navjeeven Mann
相关产品推荐
相关产品推荐

