c語言 陣列名&&結構體名 為什麼不能用陣列名給陣列賦值,結構體卻可以
阿新 • • 發佈:2019-02-19
/*
name:陣列&&結構體的一些小插曲(陣列名,結構體名,整體賦值...)
*/
#include <stdio.h>
int main()
{
char c1[3]={'a','b','c'};
/*c1[3]={'a','b'};這樣不行 why ?so easy! c1[3] 是陣列c1的第2個元素。*/
char c2[3];
printf("c2=%d\n",c2);/*10485296*/
printf("c1=%d\n",c1);/*10485312*/
/*c2=c1; 不能這樣給陣列賦值 why?
printf("c2=%d\n",c2); 結果:10485296
printf("c1=%d\n",c1); 結果:10485312
c1與c2都是常量(具體為 :指標常量),自然就無法相互賦值===
==>這也說明了 語句:char c2[3];已經分配出了固定空間來儲存c2陣列
*/
struct A{
int x;
}a1,a2;
a1.x=1;
a2.x=2;
printf("a1=%d a2=%d\n",a1,a2);
printf("a1.x=%d a2.x=%d\n",a1.x,a2.x);
a2=a1;
/*沒毛病 why?
***前方高能***
struct A{
int x;
}a1,a2;
<===>
struct A a1,a2;與常規定義變數語句類比下:
struct A a1,a2;
VS int x,y;
!!!想必帥哥美美們已經get到精華了:
沒錯,就是把struct A 看成我們自定義的一種c語言資料型別,這也與typedef呼應 ,
那麼 a1=a2 還有問題嗎?
*/
printf("a1=%d a2=%d\n",a1,a2);
printf("a1.x=%d a2.x=%d\n",a1.x,a2.x);
/*
more:
1.數 組 char c1[3] ;
2.結構體 struct A a1;
3.常 規 int x;
-------------------------------------------------------------------------------------------------------------------
2,3看成一類;
1特殊 c1就是陣列c1[0]的地址值 ,a1,x的地址為&a1,&x;
*/
return 0;
}
name:陣列&&結構體的一些小插曲(陣列名,結構體名,整體賦值...)
*/
#include <stdio.h>
int main()
{
char c1[3]={'a','b','c'};
/*c1[3]={'a','b'};這樣不行 why ?so easy! c1[3] 是陣列c1的第2個元素。*/
char c2[3];
printf("c2=%d\n",c2);/*10485296*/
printf("c1=%d\n",c1);/*10485312*/
/*c2=c1; 不能這樣給陣列賦值 why?
printf("c2=%d\n",c2); 結果:10485296
printf("c1=%d\n",c1); 結果:10485312
c1與c2都是常量(具體為 :指標常量),自然就無法相互賦值===
==>這也說明了 語句:char c2[3];已經分配出了固定空間來儲存c2陣列
*/
struct A{
int x;
}a1,a2;
a1.x=1;
a2.x=2;
printf("a1=%d a2=%d\n",a1,a2);
printf("a1.x=%d a2.x=%d\n",a1.x,a2.x);
a2=a1;
/*沒毛病 why?
***前方高能***
struct A{
int x;
}a1,a2;
<===>
struct A a1,a2;與常規定義變數語句類比下:
struct A a1,a2;
VS int x,y;
!!!想必帥哥美美們已經get到精華了:
沒錯,就是把struct A 看成我們自定義的一種c語言資料型別,這也與typedef呼應 ,
那麼 a1=a2 還有問題嗎?
*/
printf("a1=%d a2=%d\n",a1,a2);
printf("a1.x=%d a2.x=%d\n",a1.x,a2.x);
/*
more:
1.數 組 char c1[3] ;
2.結構體 struct A a1;
3.常 規 int x;
-------------------------------------------------------------------------------------------------------------------
2,3看成一類;
1特殊 c1就是陣列c1[0]的地址值 ,a1,x的地址為&a1,&x;
*/
return 0;
}