[英]Pointer array and structure in C
我什至不知道我们是如何得到给定输出的。 我能得到一些解释吗? 另外,是否有任何简短而快速的资源来尝试类似的问题?
void main()
{
struct a
{
char ch[10];
char *str;
};
struct a s1={"Hyderabad","Bangalore"};
printf("\n%c%c",s1.ch[0],*s1.str);
printf("\n%s%s",s1.ch,s1.str);
getch();
}
Ans: HB, 海得拉巴班加罗尔
struct a s1={"Hyderabad","Bangalore"};
将 "Hyderabad" 分配给ch
,将 "Bangalore" 分配给str
。
printf("\\n%c%c",s1.ch[0],*s1.str);
打印字符串的第一个字符。 由于ch
是一个数组,因此ch[0]
表示它的第一个字符。 由于str
是一个字符指针,所以它在这里指向一个字符串的第一个字符。 因此, *s1.str
将具有值 'B'
printf("\\n%s%s",s1.ch,s1.str);
简单地打印两个字符串的所有字符。 从根本上说, ch
等于&ch[0]
,即数组中第一个字符的地址。 而且, str 是指针变量,它保存字符串文字“Bangalore”的第一个字符的地址。
%c
仅用于单个字符。 示例 H。
$s
用于字符串。 示例海得拉巴。
s1.ch[0]
指向字符串 ch ->H 的第一个字符
*s1.str
是一个指针。 它指向存储在 str 地址处的值。 它将是 ->B
因此你得到HB
\\n
表示换行(如在 java 中)。
这是根据要求的问题您的输出
void main()
{
struct a
{
char ch[10];
char *str;
};
struct a s1={"Hyderabad","Bangalore"};
printf("%c%c",s1.ch[0],*s1.Str[0]);
printf("\t%s%s",s1.ch,s1.str);
getch();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.