#include <stdlib.h> typedef enum {CIRCLE,RECTANGLE}TYPE; struct Circle{ TYPE t; int x; int y; int r; }; struct Rectangle{ TYPE t; int x; int y; int width; int height; }; struct Sharp{ TYPE t; }; /* declar */ void Move(struct Sharp *s, int x, int y); static void _move_circle(struct Sharp *, int , int); static void _move_rectangle(struct Sharp *, int , int); void Print(struct Sharp *s); static void _print_rectangle(struct Sharp *r); static void _print_circle(struct Sharp *c); /****************/ void Move(struct Sharp *s, int x, int y){ switch(s->t){ case CIRCLE: _move_circle(s, x, y); break; case RECTANGLE: _move_rectangle(s, x, y); break; default: printf("not support sharp./n"); } } static void _move_circle(struct Sharp *s, int x, int y){ if(s == NULL) return; struct Circle * c = (struct Circle *)s; c->x = x; c->y = y; } static void _move_rectangle(struct Sharp *s, int x, int y){ if(s == NULL) return; struct Rectangle * r = (struct Rectangle)s; r->x = x; r->y = y; } void Print(struct Sharp *s){ switch(s->t){ case CIRCLE: _print_circle(s); break; case RECTANGLE: _print_rectangle(s); break; default: printf("not support sharp./n"); } } static void _print_circle(struct Sharp *s){ if(s == NULL) return; struct Circle *c = (struct Circle *)s; printf("x=%d,y=%d,r=%d/n", c->x, c->y, c->r); } static void _print_rectangle(struct Sharp *s){ if(s == NULL) return ; struct Rectangle * r = (struct Rectangle *)s; printf("%x=%d,y=%d,width=%d,height=%d/n",r->x, r->y, r->width, r->height); } int main(){ struct Rectangle rec= {RECTANGLE, 100, 100, 300, 400}; struct Circle cir = {CIRCLE, 100, 100, 150}; struct Sharp * s1 = (struct Sharp *)rec; struct Sharp * s2 = (struct Sharp *)cir; Print(s1); Print(s2); Move(s1, 300, 400); Move(s2, 200, 200); Print(s1); Print(s2); getch(); }
用於衡量算法佔用內存空間隨着數據量變大時的增長趨勢。這個概念與時 間複雜度非常類似,只需將“運行時間”替換爲“佔用內存空間”。 算法在運行過程中使用的內存空間主要包括以下幾種。 ‧ 輸入空間:用於存儲算法的輸入數據。
前端面試題 - null是原始類型,但爲什麼typeof null的結果是object? 造成這個結果的原因是null的內存地址是以000開頭,而js會將000開頭的內存地址視爲object。 通過isNull()來判斷一個值是不是null
DHTMLX Suite UI 組件庫允許您更快地構建跨平臺、跨瀏覽器 Web 和移動應用程序。它包括一組豐富的即用式 HTML5 組件,這些組件可以輕鬆組合到單個應用程序界面中。 DHTMLX Gantt是用於跨瀏覽器和跨平臺應用程序的功
本文分享自華爲雲社區《GaussDB(DWS)向量化執行引擎詳解》,作者: yd_212508532。 前言 適用版本:【基線功能】 傳統的行執行引擎大多采用一次一元組的執行模式,這樣在執行過程中CPU大部分時間並沒有用來處理數據,更
SpringBoot如何優雅的進行參數校驗 一.爲什麼要進行參數校驗 在日常的開發過程中,我們常常需要對傳入的參數進行校驗,比如在web前後端分離項目中,參數校驗有兩個方面: 前端進行參數校驗 後端進行參數校驗 那這兩種
結構特點 List 和 Set 是存儲單列數據的集合,Map 是存儲鍵和值這樣的雙列數據的集合;List 中存儲的數據是有順序,並且允許重複;Map 中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的,Set 中存儲的數據
本文分享自華爲雲社區《Spring高手之路17——動態代理的藝術與實踐》,作者: 磚業洋__。 1. 背景 動態代理是一種強大的設計模式,它允許開發者在運行時創建代理對象,用於攔截對真實對象的方法調用。這種技術在實現面向切面編程(AOP)
在 Vue3 中,可以使用 reactive 函數創建響應式對象。這些響應式對象可以跟蹤其屬性的變化並且自動地更新視圖。但是在某些情況下,我們可能需要清空這些響應式對象。下面是一些方法來清空 Vue3 reactive。 方法一:使用 Ob
通過一個案例瞭解 not in 對 NULL 值敏感的處理邏輯和優化方法。 作者:胡呈清,愛可生 DBA 團隊成員,擅長故障分析、性能優化,個人博客:[簡書 | 輕鬆的魚],歡迎討論。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉
前言: MySQL的性能是大家在使用時十分關心的問題,比如在高併發訪問時,並且有慢sql存在的情況下,MySQL的性能會明顯下降,這會導致數據庫響應時間變慢,甚至導致數據庫宕機。那麼爲了避免Mysql性能問題,比較常用的方式創建適當的索引
「鏈表 linked list」是一種線性數據結構,其中的每個元素都是一個節點對象,各個節點通過“引用”相連接。 引用記錄了下一個節點的內存地址,通過它可以從當前節點訪問到下一個節點。 鏈表的設計使得各個節點可以分散存儲在內存各處,它們的內
昨天,Andres Freund 通過電子郵件告知 oss-security@ 社區,他在 xz/liblzma 中發現了一個隱藏得非常巧妙的後門,這個後門甚至影響到了 OpenSSH 服務器的安全。Andres 能夠發現並深入調查這個問題
環境配置 模塊 版本 mysql 5.7.44 SpringBoot 2.1.3.RELEASE Mybatis Plus 3.2.0 mysql-connector 8.0.28 因爲現在這家公司我
1.背景簡述 在技術運維過程中,很難從某服務龐雜的日誌中,單獨找尋出某次API調用的全部日誌。 爲提高排查問題的效率,在多個系統及應用內根據 統一的TraceId 查找同一次請求鏈路上的日誌,根據日誌快速定位問題,同時需對業務代碼無侵入,
本文分享自華爲雲社區《3月閱讀周·你不知道的JavaScript | 無人不識又無人不迷糊的this》,作者: 葉一一。 關於this this關鍵字是JavaScript中最複雜的機制之一。它是一個很特別的關鍵字,被自動定義在所有函數的