Time of Update: 2018-12-03
公司開發項目調試的時候遇到一個頭疼的問題,一個函數給很多地方調用了,但我只要某個參數值時執行該斷點,這種進階的調試從來沒接觸過,上網搜了一下,果然有這方面的調試技術,下面是我找的資料,挺有用的,分享一下。 原文連結是:http://hhfighting.blog.163.com/blog/static/55700323200922093543827/ C++代碼和調試本部分教程主要介紹了良好的C++代碼風格、如何書寫安全的代碼以及在Visual
Time of Update: 2018-12-03
C++程式在編譯的時候主要有以下幾個過程: 1. 先行編譯(預先處理):主要是對偽指令(以#開頭的指令)和特殊符號進行處理。 偽指令主要包括: (1)巨集指令:如#define NAME ADU,#undef等。對於第一個指令,先行編譯主要是進行替換,除了NAME字串常量;對於第二個則取消該宏定義,以後出現該宏的地方不進行替換。
Time of Update: 2018-12-03
1. 建構函式一般應用一個建構函式初始化列表來初始化對象的資料成員。2. 建構函式不能為const。3. 可以認為夠在函數分兩個階段執行:(1)初始化階段;(2)普通計算階段,計算階段由建構函式函數體中所有語句組成。4. 不管成員是否在建構函式初始化列表中顯示初始化,類類型的資料成員總是在初始化階段初始化,初始化發生在計算階段開始之前。5. 使用建構函式初始化列表的版本初始化資料成員,沒有定義初始化列表的建構函式版本在建構函式函數體中對資料成員賦值。6.
Time of Update: 2018-12-03
C++ Primer(4 edition) 中文版P407上說:“複製初始化首先使用指定建構函式建立一個臨時對象,然後用複製建構函式將那個臨時對象複製到正在建立的對象。”但我的實驗結果顯示是沒有調用複製建構函式。 我做了個實驗(實驗1),首先寫了一個簡單的類,裡面提供一個預設建構函式,一個接受單個形參的建構函式,一個複製建構函式和一個=重載函數,在上面每個函數中都列印一個訊息,提示這個函數正在被調用。
Time of Update: 2018-12-03
今天在看C++ Primer,寫重載操作運算子練習程式的時候,在成員函數中直接操作形參中同類型對象的private成員,程式如下:OperatorOverload& OperatorOverload::operator=(const OperatorOverload &op){m_nNum1 = op.m_nNum1;//op.getNum1(); m_nNum1為privatem_nNum2 = op.m_nNum2;//op.getNum2();
Time of Update: 2018-12-03
今天在做C++ Primer第14章習題14.37的時候用到了一些STL的函數,徹底顛覆了我對C++的看法。以前總覺得C++很麻煩,實現一個功能總要寫一堆的代碼,很繁瑣,那是菜鳥時候的想法。雖然現在也還是菜鳥,但層級比原來提高了一點,今天使用了STL的演算法之後才知道,原來C++也可以這麼簡潔。 從習題一步步擴充開來講吧,習題如下:習題14.37 使用標準庫函數對象和函數適配器,定義一個對象用於: (a)尋找大於1024的所有值 (
Time of Update: 2018-12-03
起因今天九度刷題的時候,發現一個不調用任何c的庫函數實現字串拼接的代碼很多人寫的過於複雜,鏈表都用上了,真的不至於,只要知道字串的最後截止符是'\0'.題目描述:不借用任何字串庫函數實現無冗餘地接受兩個字串,然後把它們無冗餘的串連起來。輸入:每一行包括兩個字串,長度不超過100。輸出:可能有多組測試資料,對於每組資料,不借用任何字串庫函數實現無冗餘地接受兩個字串,然後把它們無冗餘的串連起來。輸出串連後的字串。範例輸入:abc def範例輸出:abcdef直接上我的AC代碼吧#include
Time of Update: 2018-12-03
圖示C記憶體配置程式碼區存放函數體的二進位代碼全域資料區全域變數和靜態變數的儲存是放在一起的。初始化的全域變數和靜態變數在一塊地區,未初始化的全域變數和未初始化的靜態變數在相鄰的另一塊地區。常量資料存放在另一個地區裡。這些資料在程式結束後由系統釋放。我們所說的BSS段(bss segment)通常是指用來存放程式中未初始化的全域變數的一塊記憶體地區。BSS是英文Block Started by
Time of Update: 2018-12-03
前言今天在家裡做acm的時候,用到了sscanf()函數,感覺特別犀利,這裡記錄一下用法。sscanf()函數原型int sscanf(const char *str, const char *format, mixed var1, mixed var2);說明:sscanf()會將參數str的字串根據參數format來轉換並格式化資料。format格式{%[*] [width][{h | l | l64 | L}]type | ' ' | t' | '\n' | 非%符號}註:*可用于格式中,
Time of Update: 2018-12-03
1.起因今天在acm刷題的時候,之前的排序演算法一直都是冒泡,可能九度OJ的難度題考察的都是快速排序,導致我都是死在time
Time of Update: 2018-12-03
前言在九度oj做acm的時候,經常會遇到了char類型和int類型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文檔上了,現在開始慢慢向CSDN部落格轉移。問題類型char型數字轉換為int型轉換方法a[i] - '0'參考程式#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char str[10];int i,
Time of Update: 2018-12-03
1、指標數組與數組指標 (1)int* q[10]; 指標數組,聲明一個指向含有10個整型指標元素的數組。 (2)int (*p)[10]; 數組指標,聲明一個指向10個整型數組的指標。 指標數組是元素為指標的數組,而數組指標是元素為指向數組的指標。 2、函數指標與指標函數 (1)int (*p)max(int a,int b);
Time of Update: 2018-12-03
因為虛擬函數的地址翻譯取決於對象的記憶體位址,而不取決於資料類型(編譯器對函數調用的合法性檢查取決於資料類型)。原來,如果類中定義了虛擬函數,該類及其衍生類別就要產生一張虛函數表,即vtable。而在類的對象地址空間中儲存一個該虛函數表的入口,佔4個位元組,這個入口地址是在構造對象是由編譯器寫入的。 有如下C++程式://#include<stdio.h>#include<iostream>using namespace std;class CMem{public:
Time of Update: 2018-12-03
起因在九度練習acm的時候,有道題我認為應該先進行數組去重操作,由於工作中我大部分都是用php寫代碼,php中數組去重只要一個array_diff()函數即可實現,但是到C語言中,我就沒有現成的api函數可以讓我調用了,因此我自己實現了一個演算法,進行數組去重,但是這個演算法有明顯的缺陷,我會先把演算法展示出來,然後解釋演算法的缺陷數組去重代碼#include <stdio.h>#include <stdlib.h>#define false -1int
Time of Update: 2018-12-03
1.問題描述:給出一串數,找出這樣的數,比他們前面的數都大,比它後面的數都小。要求:輸入的數個數要大於3 解答:思路,寫一個函數,該函數的功能是找出指定數組當中以i為下標的數是否滿足條件:比他們前面的數都大,比它後面的數都小。若滿足,則返回true,否則返回false. 來源程式:/*************給出一串數,找出這樣的數,比他們前面的數都大,比它後面的數都小。要求:輸入的數個數要大於3 思路:分別找出比前面都大並且比後面都小的數,兩種情況都滿足*************/
Time of Update: 2018-12-03
1)解析C語言中的sizeof一、sizeof的概念 sizeof是C語言的一種單目操作符,如C語言的其他動作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是一個運算式或括在括弧內的類型名。運算元的儲存大小由運算元的類型決定。 二、sizeof的使用方法 1、用於資料類型 sizeof使用形式:sizeof(type) 資料類型必須用括弧括住。如sizeof(int)。 2、用於變數
Time of Update: 2018-12-03
偉大的Bill Gates 曾經失言: 640K ought to be enough for everybody — Bill Gates
Time of Update: 2018-12-03
學了C語言和C++已經三個年頭了,但是對於條件編譯指令還不是很瞭解,看到Linux平台下地一些優秀的原始碼,諸如uC/OS-II等用到了很多編譯指令,MFC內部也用到了條件編譯指令,現在把我學到的一些條件編譯指令做下總結,以後學習到其他的編譯指令,再添加進來一、防止標頭檔重複包含#ifndef _***_H #define _***_H 程式段#endif 這個條件編譯指令經常用在標頭檔中,可以防止標頭檔重複包含。 二、#IFDEF | #IFNDEF ... #ENDIF
Time of Update: 2018-12-03
Time of Update: 2018-12-03
1.大小寫不敏感的string類..可以看一下char_traits的定義,仿照定義一個自己的模版類,改寫static bool __cdecl eq(const _Elem& _Left, const _Elem& _Right) { if(_Left == _Right) return true; else{ _Elem maxElem = max(_Left, _Right); _Elem minElem = (_Left+_Right)-maxElem;