【发布时间】:2012-09-26 19:45:55
【问题描述】:
我最近才开始学习 C。我在学习数组和指针的概念时,遇到了理解它的绊脚石。
考虑这段代码 -
#include<stdio.h>
int main()
{
char string[]="Hello";
char *ptr;
ptr=string;
puts(*ptr);
return(0);
}
它可以编译,但在执行时遇到分段错误。
我得到的警告是:
`puts' 的参数 1 中的类型错误;找到 'char' 预期的 'pointer to char'
现在 *ptr 确实返回一个字符“H”,我最初的印象是它只接受一个字符作为输入。
后来,我了解到 puts() 在输入时需要一个指向字符数组的指针,但我的问题是当我传递这样的东西时 - puts("H") 与puts(*ptr),假设 *ptr 确实包含字符“H”。
【问题讨论】:
-
警告几乎解释了这个问题。您正在将单个 char 传递给需要指向 char 的指针的函数。
-
在C语言中,char和长度为1的字符串是不一样的,把char看成一个小数比较好。