Time of Update: 2018-07-18
函數指標: 函數指標是指向函數的指標,它代表的就是函數的地址: 如: int (*fun)(int *); 以上的代碼聲明了一個輸入參數為int *, 傳回值的int的函數指標fun. 指標數組: 指標數組應該是比較常見了,如下: int *p[10]; 數組指標: 指向數組的指標 int a[4][5];int (*p)[5] = a; 擴充: 函數指標數組: int (*fun[])(
Time of Update: 2018-07-18
用C語言實現一個迴圈隊列並不難。關鍵點在於對隊列 "空" 和 "滿" 狀態的判斷。 正如《C和指標》中所描寫的,有兩種方法來實現對隊列空和滿狀態的判斷。 在數組中空一個元素不填,起始時, 置tail為0, front為1, 這樣一來, 實現要浪費queue buffer中兩個元素空間: 隊列空: (tail+1) % queue_size == front 隊列滿: (tail+2) %
Time of Update: 2018-07-18
參數入棧的順序 以前在面試中被人問到這樣的問題,函數調用的時候,參數入棧的順序是從左向右,還是從右向左。參數的入棧順序主要看調用方式,一般來說,__cdecl 和__stdcall 都是參數從右至左入棧。看下面的代碼: #include <stdio.h>int test(int a, int b){ printf("address of a %x.\n", &a); printf("address of b
Time of Update: 2018-07-18
C++重載相關面試問題 Table of Contents 1. 什麼是重載,重載的定義是什麼。 2. 重載函數為什麼不能傳回值來區分。 3. 重載(overload)與重寫(override)的區別是什麼。 4. 什麼是重定義(redefining)。 5. 請寫出++操作符的首碼(prefix)和尾碼(postfix)重載函數。
Time of Update: 2018-07-18
C語言中史上最愚蠢的Bug 2011年8月26日 陳皓 發表評論 閱讀評論 38,650 人閱讀 本文來自“The most stupid C bug ever”,很有意思,分享給大家。我相信這樣的bug,就算你是高手你也會犯的。你來看看作者犯的這個Bug吧。。
Time of Update: 2018-07-18
輸入n,再輸入n個點的平面座標,然後輸出那些距離座標原點不超過5的點的座標值。 #include <stdio.h> #include <math.h> #include <stdlib.h> void main() { int i,n; /***** 1 *****/ struct axy { float x,y; } a; scanf("%d&
Time of Update: 2018-07-18
/** 程式的著作權和版本聲明部分* Copyright (c)2013, 煙台大學電腦學院學生* All rightsreserved.* 檔案名稱: object.cpp* 作者:王鍇英* 完成日期: 2013年04月12日* 版本號碼: v1.0* 輸入描述:無* 問題描述:無* 程式輸出:無*/#include <iostream>#include <string>using namespace std;class Box{ public:
Time of Update: 2018-07-18
關於C語言你不知道的事(1)–指標和數組的區別 Table of Contents 1 一個很多人都會做錯的面試題 2 數組與指標的差別 2.1 數組和指標是如何訪問的 2.2 數組和指標可以相同麼 1 一個很多人都會做錯的面試題
Time of Update: 2018-07-18
用C語言實現一個非遞迴的二分尋找演算法其實並不算太難,但要求對各種資料類型通用,其難度就有些增加了。 C語言沒有函數模版,所以主要使用了void指標和函數指標。 具體的代碼如下: typedef int (*CMP_FUN)(CONST VOID *Key, CONST VOID *dst);#define GET_DATA(arr, pos, size) ((UINT8 *)(arr) + (pos) * (size))VOID *BiSearch(CONST VOID
Time of Update: 2018-07-18
歡迎訪問我的新部落格:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1366850400.html 簡述 楊輝三角是二項式係數在三角形中的一種幾何排列,n次二項式係數對應楊輝三角形的n+1行。該程式的作用是列印10行楊輝三角,用到的只是兩個迴圈的嵌套,並用二維數組儲存。 效果如圖所示: 原始碼 # include <stdio.h># define
Time of Update: 2018-07-18
typedef和宏的關鍵性區別主要體現在兩個方面: 1. 可以用其它類型符對宏定義的類型符進行擴充,而typedef卻不行 #define peach intunsigned peach i; /* OK*/typedef peach int;unsigned peach i; /*Error!*/ 2. 在連續幾個變數的聲明中,typedef能保證這個變數的類型一致,而define則不可以 #define int_ptr int
Time of Update: 2018-07-18
今天做了楊輝三角的題目。在草稿上面寫好了思路,回到宿舍就開始開始敲代碼。就幾行,不過調試的時候搞錯了兩個地方,一個是i=j還有一個是j=0;好久不搞這個,居然犯這麼低級的錯誤。,改好之後就好了。 楊輝三角你只要是明白了思路就好辦,下面是我的思路: 1
Time of Update: 2018-07-18
同學考我的一道題。 1.寫一個c語言程式,輸出hello,刪掉代碼的第一個字元,輸出world。 2.寫一個c語言程式,輸出hello,刪掉代碼的最後一個字元,輸出world。 想了一會,寫出了這兩個代碼,哈哈,再次膜拜一下c語言的文法。 Think time 。 。 。 。 。 。 //*#define CQSB//*/#include<
Time of Update: 2018-07-18
由於C語言是面向過程的語言,在處理比較大的項目時,結構上會顯得有些鬆散。管理起來不免力不從心。 其實在使用C語言寫程式的過程中,也可以引入一些面象對象的思想。下面我們主要來談談如何用C語言把這些思想表達出來: 1. 封裝 這個最簡單了,C語言中雖然沒有類,但有struct。這可是個好東西。我們可以在一個struct中存入資料和函數指標,以此來類比類行為。 typedef struct _Parent{ int a; int b; void (*print)
Time of Update: 2018-07-18
C語言函數調用棧淺析 一直在做較為底層的編程,很早以前就想寫一篇關於C語言調用棧相關的文章。正好這一次和一個同事一起做debug tool。 其中要做一個call stack的功能。於是我又重新開啟IA32的文檔,把C調用棧的原理記錄如下。 Table of Contents 1 為什麼要有彙編。 2 將要用到的寄存器 3 函數調用前後,ESP的變化 4 如何擷取Call Stack? 5 執行個體分析
Time of Update: 2018-07-18
好久不用C++了,前幾天寫了一個模版,按以前的習慣,把定義寫在標頭檔中, 把實現寫在cpp檔案中。結果在編譯的時候沒有發生錯誤,但在串連的時候出現了找不到xxx的錯誤。一時之間不知道該怎麼辦才好,後來上網一查,自己再一想,唉,原來如此:
Time of Update: 2018-07-18
1 為什麼要多線程 第一種情況很好理解,那就是在多CPU 時,使用多線程可以提高CPU的使用率。
Time of Update: 2018-07-18
C語言用一位元組和二維數組列印楊輝三角 #include<stdio.h> /*用一維數組和二維數組列印楊輝三角*/#define N 100#define M 10void one_dim_array(int *a,int num) //用一維數組列印{int i,j,k;printf("%5d\n",a[0]); //先列印出第一行資料
Time of Update: 2018-07-18
#include <iostream>#include <cmath>#include <Eigen/Eigen>using namespace Eigen;#define ITER_STEP (1e-5)#define ITER_CNT (100)typedef void (*func_ptr)(const VectorXd &input, const VectorXd ¶ms, VectorXd
Time of Update: 2018-07-18
#include <iostream>#include <cmath>#include <Eigen/Eigen>using namespace Eigen;#define ITER_STEP (1e-5)#define ITER_CNT (100)typedef void (*func_ptr)(const VectorXd &input, const VectorXd ¶ms, VectorXd &output);