C中的指针数组和结构

时间:2015-06-10 18:27:56

标签: 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,HyderabadBangalore

3 个答案:

答案 0 :(得分:1)

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是指针变量,它保存字符串文字“班加罗尔”的第一个字符的地址。

答案 1 :(得分:0)

%c仅适用于单个字符。例H. $s用于字符串。示例海得拉巴。

s1.ch[0]指向String ch的第一个字符 - > H
*s1.str是一个指针。它指向存储在str地址的值。它将是 - > B
因此,您得到HB

\n表示新行(如java中所示)。

答案 2 :(得分:0)

根据要求的问题,这是您的输出

button