1.鏁扮粍鍜屾寚閽堛?br /> 1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void test(int arr[])
5 {
6 printf("In Func: size of the array is %d\n", sizeof(arr) ); //4 the pointer's size
7 }
8
9 void test_char(char arr[])
10 {
11 printf("In Func: sizeof the my_char is %d\n", sizeof(arr)); //4 the pointer's size
12 printf("In Func: strlen the my_char is %d\n", strlen(arr)); //11 the string's size
13 }
14
15 int main()
16 {
17 int array[100]={1,3,4,5};
18 char my_char[50]="hello world";
19
20 printf("In Main: sizeof the array is %d\n", sizeof( array) ); //400
21
22 printf("In Main: sizeof the my_char is %d\n", sizeof(my_char)); //50
23 printf("In Main: strlen the my_char is %d\n", strlen(my_char)); //11 the string's size
24
25 test(array);
26 test_char(my_char);
27 }
C璇█鍏佽鎶婂艦鍙傚0鏄庝負鏁扮粍錛屾垨鑰呮寚閽堛傜紪璇戝櫒鐭ラ亾浣曟椂褰㈠弬鏄綔涓烘暟緇勫0鏄庣殑錛屼絾浜嬪疄涓婂湪鍑芥暟鐨勫唴閮紝緙栬瘧鍣ㄥ緇堟妸瀹冨綋鍋氭寚鍚戞暟緇勭涓涓厓绱犵殑鎸囬拡銆?br />錛堜篃鍥犱負濡傛錛岃繖涓寚閽堢殑鍦板潃錛屼笌鏁扮粍絎竴涓厓绱犵殑鍦板潃涓嶇浉鍚屻傦級
鍥犳錛屼絾test鍜宼est_char鍑芥暟涓紝sizeof錛坧ointer錛夌殑澶у皬閮芥槸4錛屼負鎸囬拡鐨勫ぇ灝忋?br />涔熷洜姝わ紝鍙兘浼犵粰鍑芥暟錛屾暟緇勭殑澶у皬錛屽洜涓烘棤娉曠敤sizeof鎺ㄥ嚭鏁扮粍鐨勫ぇ灝忋?br />
2.鏈変竴縐嶆搷浣滃彧鑳藉湪鎸囬拡閲岃繘琛岋紝鑰屾棤娉曞湪鏁扮粍涓繘琛岋紝灝辨槸淇敼瀹冪殑鍊箋?br />鏁扮粍鍚嶆槸涓嶅彲淇敼鐨勫乏鍊鹼紝浠栫殑鍊兼槸涓嶈兘鏀瑰彉鐨勩備篃鍙湅鍋氬父閲忔寚閽堛?br />
3.鏁扮粍鍜屾寚閽堢殑鍙氦鎹㈡ф葷粨
鐢╝[i]榪欐牱鐨勫艦寮忓鏁扮粍榪涜璁塊棶錛屾繪槸琚紪璇戝櫒“鏀瑰啓”鎴?(a+i)榪欐牱鐨勬寚閽堣闂?br />鎸囬拡濮嬬粓灝辨槸鎸囬拡銆傚畠緇濅笉鍙互鏀瑰啓鎴愭暟緇勩備綘鍙互鐢ㄤ笅鏍囧艦寮忚闂寚閽堬紝涓鑸兘鏄寚閽堜綔涓哄嚱鏁板弬鏁版椂鍊欙紝鑰屼笖浣犵煡閬撳疄闄呬紶閫掔粰鍑芥暟鐨勫氨鏄竴涓暟緇?br />鍦ㄧ壒瀹氫笂涓嬫枃涓紝涔熷氨鏄綔涓哄嚱鏁扮殑鍙傛暟錛屼竴涓暟緇勭殑澹版槑錛屽彲渚濈湅鍋氭槸涓涓寚閽堛備綔涓哄嚱鏁板弬鏁扮殑鏁扮粍錛屽緇堜細琚紪璇戝櫒鏀規垚鎸囧悜鏁扮粍鐨勭涓涓厓绱犵殑鎸囬拡銆?br />褰撴妸涓涓暟緇勫畾涔変負鍑芥暟鐨勫弬鏁版椂鍊欙紝鍙互閫夋嫨瀹氫箟涓烘暟緇勶紝涔熷彲浠ュ畾涔変負鎸囬拡錛屼笉綆$敤鍝鏂規硶錛屽湪鍑芥暟鍐呴儴浜嬪疄涓婅幏寰楃殑灝辨槸涓涓寚閽?br />鍦ㄥ叾浠栨墍鏈夋儏鍐碉紝瀹氫箟鍜屽0鏄庡繀欏葷浉鍖歸厤銆傚鏋滃畾涔変簡涓涓暟緇勶紝鍦ㄥ叾浠栨枃浠朵腑瀵瑰畠榪涜澹版槑鏃跺欙紝涔熷繀欏繪妸浠栧0鏄庝負鏁扮粍銆傛寚閽堜篃鏄竴鏍楓?br />
4.鏁扮粍鍚嶄笌鏁扮粍涓涓厓绱狅紝 涓庝綔涓哄弬鏁版椂錛岃緙栬瘧鍣ㄨ漿鎹負鐨勬寚閽堢殑鍏崇郴銆?br />#include <stdio.h>
#include <stdlib.h>
void test_char(
char arr[])
{
printf("In test_char()

.\n");
printf("addr of array param = %#x \n", &arr);
printf("content of array param = %#x \n", arr);
printf("addr of (arr[0]) = %#x \n", &arr[0]);
printf("addr of (arr[1]) = %#x \n", &arr[1]);
printf("++arr = %#x \n", ++arr);
}
int main()
{
//int array[100]={1,3,4,5};
char my_char[50]="hello world";
printf("addr of array head %x\n", &my_char);
printf("addr of my_char[0] %x\n", &(my_char[0]));
printf("addr of my_char[1] %x\n", &(my_char[1]));
//test(array);
test_char(my_char);
}
緇撴灉錛?br />addr of array head bf8c0dfa
addr of my_char[0] bf8c0dfa
addr of my_char[1] bf8c0dfb
In test_char()

.
addr of array param = 0xbf8c0de0
content of array param = 0xbf8c0dfa
addr of (arr[0]) = 0xbf8c0dfa
addr of (arr[1]) = 0xbf8c0dfb
++arr = 0xbf8c0dfb
緇撴灉璇存槑錛?br />鏁扮粍鍚嶇殑鍦板潃涓庢暟緇勭涓涓厓绱犵殑鍦板潃鏄浉鍚岀殑銆?span style="color: red; ">鍥犳鏁扮粍鍚嶄笉鏄涓涓厓绱犵殑鎸囬拡錛岃屾槸絎竴涓厓绱狅紝闄や簡瀹冧笉鑳界洿鎺ュ彇鍑虹涓涓厓绱犮?br />鍦╰est_char 鍑芥暟涓?span style="color: red; ">鍙傛暟鐨勫湴鍧涓庢暟緇勭涓涓厓绱犵殑鍦板潃涓嶅悓錛岃屽弬鏁扮殑鍐呭鏄涓涓厓绱犵殑鍦板潃銆傝鏄庣紪璇戝櫒紜疄鐢ㄦ寚閽堝疄鐜頒簡鏁扮粍鐨勮闂傛寚閽?+鍚庯紝鎸囧悜鏁扮粍涓嬩竴涓厓绱犮?br />

]]>