繁体   English   中英

C中的指针数组和结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM