大魔王程式設計師生成記 05 C語言基礎 陣列2

2021-08-29 08:09:18 字數 3073 閱讀 2717

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...