2015-06-10 206 views
-4

我甚至猜測我們是如何得到給定輸出的。我能得到一些解釋嗎?此外,任何簡短和快速的資源來嘗試類似的問題?指針數組和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(); 
} 

答:HB,HyderabadBangalore

回答

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是指針變量,它保存字符串文字「Bangalore」的第一個字符的地址。

0

%c僅適用於單個字符。示例H.
$s用於字符串。示例Hyderabad。

s1.ch[0]點字符串ch的第一個字符 - >ħ
*s1.str是一個指針。它指向存儲在str地址的值。這將是 - >乙:
因此你HB

\n表示新行(如JAVA)。

0

這裏是根據問題要求你的輸出

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(); 
    }