第七節 結構體

2021-10-01 09:47:26 字數 3644 閱讀 9883

1,下面程式是執行結果是?

#include

#include

struct stu

;void

fun(

struct stu *p)

intmain1()

,,};

fun(students +1)

;system

("pause");

return0;

}

2,喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水,給20元,可以多少汽水(程式設計實現)。

#define _crt_secure_no_warnings

#include

#include

intdrink_water

(unsigned

int money)

return bot;

}int

main()

3,指標、陣列;』字元長度、字串長度

//#include 

//#include

//#include

////int main() ;

// // printf("%d\n", sizeof(arr)); // 6 整個陣列的記憶體大小

// // printf("%d\n", sizeof(arr + 0)); // 4 arr + 0 已經變成指標了

// // printf("%d\n", sizeof(*arr));// 1 *arr 得到乙個 char

// // printf("%d\n", sizeof(arr[1]));// 1 arr[1] 得到乙個 char

// // &arr 型別是 char(*)[6]

// // printf("%d\n", sizeof(&arr));// 4 &arr 得到的是乙個陣列指標, 也是指標

// // printf("%d\n", sizeof(&arr[0] + 1)); // 4 得到的是乙個 char*

//// // strlen 是求字串的長度, 乙個帶 \0 的字元陣列才叫字串

// // printf("%d\n", strlen(arr)); // 未定義行為

// // printf("%d\n", strlen(arr + 0)); // 未定義行為

// // 原則上應該要編譯失敗, 但是 c 語言對於型別檢查沒那麼嚴格,

// // 就導致把 char 隱式轉成了 char*. 這樣還是得到了乙個非法的指標.

// // 解引用的時候就會出現未定義行為

// // printf("%d\n", strlen(*arr));

// // 這個**同上

// // printf("%d\n", strlen(arr[1]));

// // char(*)[6];

// // &arr 型別和 char* 不一致. 如果隱式型別轉換過去的話,

// // 就會得到乙個指向 'a' 指標. 從這個指標開始往後找 \0 仍然找不到

// // printf("%d\n", strlen(&arr));

// // 這個**和上面一樣

// // printf("%d\n", strlen(&arr + 1));

// // printf("%d\n", strlen(&arr[0] + 1)); // 得到乙個指向 b 的指標. 但是仍然是未定義行為

//// /

// // 第二組

// /

// // char arr = "abcdef";

// // printf("%d\n", sizeof(arr)); // 7 帶 \0

// // printf("%d\n", sizeof(arr + 0));// 4 arr + 0 得到乙個 char*

// // printf("%d\n", sizeof(*arr));// 1 *arr 得到乙個字元

// // printf("%d\n", sizeof(arr[1]));// 1 同上

// // printf("%d\n", sizeof(&arr));// 4 &arr 陣列指標

// // printf("%d\n", sizeof(&arr + 1));// 4 同上

// // printf("%d\n", sizeof(&arr[0] + 1));// 4 得到乙個 char*

//// // printf("%d\n", strlen(arr));//6 求字串長度, 不算 \0

// // printf("%d\n", strlen(arr + 0));// 6 得到的還是乙個指向 a 的指標

// // printf("%d\n", strlen(*arr));// 未定義行為, *arr 得到的是 字元 a

// // printf("%d\n", strlen(arr[1]));// 同上

// // printf("%d\n", strlen(&arr));// 6 &arr 是乙個陣列指標, 裡面存的位址恰好就是陣列首元素位址

// // printf("%d\n", strlen(&arr + 1));// 未定義行為, &arr 是乙個陣列指標, + 1 跳過了整個陣列, 此時就已經訪問的是非法記憶體了

// // printf("%d\n", strlen(&arr[0] + 1));// 5 &arr[0] + 1 得到指向 b 的指標

//// /

// // 第三組

// /

// // char* p = "abcdef";

// // printf("%d\n", sizeof(p)); // 4

// // printf("%d\n", sizeof(p + 1)); // 4

// // printf("%d\n", sizeof(*p));// 1 *p 是乙個 char 型別

// // printf("%d\n", sizeof(p[1]));// 1 p[1] 是乙個char

// // printf("%d\n", sizeof(&p));// 4 char**

// // printf("%d\n", sizeof(&p + 1));// 4 char**

// // printf("%d\n", sizeof(&p[0] + 1));// 4, char* 指向 b

//// // printf("%d\n", strlen(p)); // 6

// // printf("%d\n", strlen(p + 1)); //5

// // printf("%d\n", strlen(*p)); // 未定義行為

// // printf("%d\n", strlen(p[1])); // 未定義行為

// // printf("%d\n", strlen(&p));// 未定義行為. &p => char**

// // printf("%d\n", strlen(&p + 1)); // 未定義行為

// // printf("%d\n", strlen(&p[0] + 1)); // 5

////

//// system("pause");

// return 0;

//}

第七節 指標

go語言有指標這一概念。直接上 func pointtest 定義int型別的值a,並且賦值為3 定義int型別指標變數p,並且取a的位址賦值給p 輸出a和p 控制台 3 0xc00000a0a8 3 process finished with exit code 0 a的值為3,p為a在記憶體中的...

第七節 覆蓋虛介面

有時候我們需要表達一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為乙個實體在我們眼前出現,為此物件導向的程式語言便有了抽象類的概念。c 作為乙個物件導向的語言,必然也會引入抽象類這一概念。介面和抽象類使您可以建立元件互動的定義。通過介面,可以指定元件必須實現的方法,但不實際指定如何實...

HCIE筆記 第七節 ICMP ARP

icmp重定向 作用 解決網路中的次優路徑 觸發 當某乙個裝置收到乙個資料,進行 時發現還要從該介面進行 於是觸發icmp重定向。報文 type 5,code 0 arp 位址解析協議 正向arp 位址解析協議 在已知ip的情況下,求與之對應的mac位址。arp是基於資料鏈路層封裝的2.5層協議。接...