1.sizeof(arr):整個陣列的位元組大小
2.&arr+1:陣列最後乙個元素的後面
1.可以通過下標去訪問。
2.通過指標的形式訪問。
在如下**中
int arr[5]=;
int *p=arr;
int a=*(p+3);
int a=*p+3;
*p=arr;相當於將陣列首元素的首位址付給了指標變數p。
a=*(p+3);相當於a=arr[3];
a=*p+3;相當於指標變數p所指向的首元素加3,即a=a[0]+3==1+3==4;
在如下**中
printf("%d\n",&arr);
printf("%d ",&arr+1);
printf("%d ",&arr[0]);
printf("%d ",&arr[4]);
printf("%d ",arr);
&arr+1:代表arr陣列最後乙個元素的後面;
即&arr==&arr[0]==arr;只有&arr+1不同。
用來存放字元資料的陣列是字元型陣列。字元型陣列中的乙個元素存放乙個字元。如:
char crr[5]=;
在如下**中
char crr[5]=;
char crr2[5]="abcd";
char crr3="abcdef";
char crr4[10]="abcdef";
printf("%d\n",sizeof(crr));
printf("%d\n",sizeof(crr2));
printf("%d\n",sizeof(crr3));
printf("%d\n",sizeof(crr4));
執行結果為:
注:1.字元陣列 如果只寫了部分(乙個元素中5個元素只寫了4個元素)預設最後乙個是『\0'(結束標誌)。
2.字元陣列中在字串後面缺省會加'\0'。
在如下**中
char crr[5]=;
char crr2[5]="abcd";
char crr3="abcdef";
char crr4[10]="abcdef";
printf("%s\n",crr);
printf("%s\n",crr2);
printf("%s\n",crr3);
printf("%s\n",crr4);
crr不能夠列印出來,原因是%s遇到'\0'才停止,陣列放滿沒就有'\0';其他可以正常列印。
在如下**中
char crr5[10]=crr4;
系統會報錯,原因是陣列的整體賦值只有一次機會
初始化
在如下**中
char *str="tulun";
*(str+1)='g';
系統會報錯,原因是字串不能被修改,字串背儲存在rodata段(ro==readonly),即唯讀段 只能讀,不能寫。
提問,在如下**中
char ch1=0x00;
char ch2='0';
char ch3=0;
char ch4='\0';
'0'和0,和'\0'有什麼區別?
ch1:表示16進製制的0;
ch2:表示字元0,即數字78;
ch3:表示十進位制的0;
ch4:表示ascii碼的0;
即輸出結果ch1==ch3==ch4;
提問,在如下**中
char str[100] = "abcdef";
char *str2 = "abcdef";
char str3 = "abcdef";
char str4[100] = "abcdef\0xyz";
char *str5 = "abcdef\0xyz";
char str6 = "abcdef\0xyz";
char str7 = "abcdef\n\0";
char *str8 = "abcdef\n\0";
printf("%d,%d\n",sizeof(str),strlen(str));
printf("%d,%d\n",sizeof(str2),strlen(str2));
printf("%d,%d\n",sizeof(str3),strlen(str3));
printf("%d,%d\n",sizeof(str4),strlen(str4));
printf("%d,%d\n",sizeof(str5),strlen(str5));
printf("%d,%d\n",sizeof(str6),strlen(str6));
printf("%d,%d\n",sizeof(str7),strlen(str7));
printf("%d,%d\n",sizeof(str8),strlen(str8));
輸出結果是什麼?
執行結果為:
注: strlen():求字串的長度,不包括'\0'(到'\0'就停)。 需要新增標頭檔案#include
字元陣列 如果只寫了部分(乙個元素中5個元素只寫了4個元素)預設最後乙個是『\0'(結束標誌)。
所有型別的指標都佔4位元組。
字元陣列中在字串後面缺省會加'\0'。字串中出現'\0'也會在最後再加上乙個'\0'。
在字元陣列的字串中'\n'和'\0'也算乙個元素。
大魔王程式設計師生成記 01 C語言基礎
預處理指令。include 或者 define c編譯系統在對源程式編譯之前,先由乙個預編譯器進行處理,將stdioo.h標頭檔案的內容讀出來,放在 include指令行。stdio.h 檔案裡面包含了很多的函式供程式設計師直接使用,例如printf 和scanf 開頭的,都稱為預處理指令。程式總是...
大魔王程式設計師生成記 06 1 C語言習題
目錄 1.求斐波那契數列前40項 2.求連續子陣列的最大和 3.輾轉相處,求最大公約數 4.判斷大小端 5.大小端的轉換 6.int型別 指標 float 和零值如何比較 7.對指標的理解 8.const 和 define 區別?9.求字串單詞個數 10.回文字串 11.here is tulun ...
黑馬程式設計師 C語言基礎
ios培訓 android培訓 期待與您交流!一 c語言的流程控制 1 順序結構 按照程式的書寫順序執行每一條語句 2 選擇結構 對給定的條件進行判斷,再根據判斷結果來決定執行哪一段 2.1 if語句 1 if的第一種結構 if 條件 eg include int main return 0 2 i...