C/C++小小知識點

memcpy  void * memcpy ( void * destination, const void * source, size_t num );   二進位拷貝  strcpy   char * strcpy ( char * destination, const char * source );   不能用於string,可用於char *和char []  strcat  char * strcat ( char * destination, const char *

老調重談:C語言中的指標和數組

在C語言中,有時候指標和數組等效,有的時候卻不然。 什麼時候不同?1. 數組名本身就代表一個地址。指標代表地址的地址。所以,指標、數組的定義和可能有的多處的聲明要嚴格匹配!不能將在一個地方定義的數組,在他處聲明為指標。反過來也不行!(詳見C專家p84)的  2. 指標和數組都可以在他們的定義中用字串常量進行初始化。儘管看上去一樣,但底層的實現機制卻不同。定義指標時,編譯器不為指標所指向的對象分配空間,它只是分配指標本身的空間。除非在定義的同時賦給指標一個字串常量進行初始化。例如:char *p

C語言 字串轉化為數字

int atoi ( const char * str )           //Convert string to integer忽略str前方的空白,直到遇到第一個非空白字元,如果第一個非空白字元是加號或減號或者數字,則轉換儘可能長的有效字元為數字。如果沒有合法的轉換返回0,如果轉換後的值超過int表示範圍,INT_MAX or INT_MIN is returned。 long int atol ( const char * str )    //Convert string to

Effective C++ 小筆記:條款3-6

Effective  C++

Effective C++ 小筆記:條款7-12

條款7:為多態基類聲明virtual解構函式  C++明白指出,當derived class對象經由一個base class指標被刪除,而該base class帶著一個non-virtual解構函式,其結果未有定義。事實上,derived對象被局部銷毀,只有其base class部分記憶體被正確釋放。造成資源泄漏,敗壞資料結構。  任何class只要帶有virtual函數,都幾乎確定應該也有一個virtual解構函式。 如果class不含virtual函數,通常表示它不意圖被用作一個base

C語言一個微妙的Bug

 1 #include <stdio.h> 2  3 int array[] = {23, 24 ,12, 204}; 4 #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) 5  6 void main() 7 { 8  int d = -1; 9  if(d <= TOTAL_ELEMENTS)10   printf("TRUE\n");11 } 運行結果是不列印TRUE。 解釋:TOTAL_ELEMENT所定義的

C語言中的緩衝輸出

     程式的輸出方式有兩種:一種是及時輸出,另一種是先緩衝起來,然後大塊輸出。前者往往給系統造成很大的負擔,影響程式效能。後者的實現,C語言通過函數 void setbuf ( FILE * stream, char * buffer );實現。此函數的功能是通知輸入輸出函數庫中的函數,所有寫入到stream的輸出都應該使用buffer作為輸出緩衝區,直到buffer緩衝區被填滿,或者程式員顯式調用int fflush ( FILE * stream

C++/C函數的調用規範

先看一個代碼void myfun(int i, int ii){ cout << i << " " << ii << endl;}void main(){ int b = 3; int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf("%d\t%d\n", *ptr, *++ptr); int i = 10;

C語言中動態記憶體管理函數

文章目錄 ParametersReturn ValueParametersReturn ValueParametersReturn ValueParameters 記憶體配置mallocfunction<cstdlib>void * malloc ( size_t size );Allocate memory blockAllocates a block of size bytes of memory, returning a

principal point in my C study

1. sizeof() 和strlen()sizeof() and strlen() Code highlighting produced by Actipro CodeHighlighter

C語言/C++編譯過程

1、編譯預先處理:  編譯器讀取C來源程式,對其中的預先處理命令(以#開頭)和特殊符號進行處理。預先處理命令包括主要包括三種,一是宏定義命令,二是條件編譯指令,三是標頭檔包含指令。採用標頭檔的目的是使某些定義可以供多個不同的C來源程式使用。在需要用到這些定義的C來源程式中,只需加上#include語句即可,而不必重新定義一遍。先行編譯程式將標頭檔中的代碼統統加入到源檔案,進而產生輸出檔案。  除了以上三種預先處理命令,還有特殊符號。先行編譯程式可以識別一些特殊符號。例如在來源程式中出現的LINE

C++的數組和指標

數組的定義  數組的維數必須用大於等於1的常量運算式定義。此常量運算式只能包含整形字面值常量、枚舉常量、或者用常量運算式初始化的整形const對象。  非const變數、以及到運行階段才知道其值的const變數都不能用於定義數組的維數。const int size = get_size();int a_size = 26;int table[size];     //errorint array[a_size];         //error//因為size雖然是const int常量,但是編

C++中的引用、const引用和非const引用

    關於引用  定義一個引用的時候必須要進行初始化,否則編譯錯誤。      當引用初始化以後,只要改引用存在,它就綁定到初始化時指向的對象。不可能將引用綁定到另一個對象。  非const引用只能綁定到與該引用同類型的對象。const引用可以綁定到不同但相互關聯類型的對象,還可以綁定到右值。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1//

C++/C小知識點(2)

負數的右移位操作負數的>>操作,結果取決於語言的實現,左邊空出的位置,可能填補0,也可能填補1。 靜態局部對象      內建類型的局部對象如果沒顯式初始化,則值就未初始化。靜態局部對象、全域對象,包括內建類型和使用者自訂類型,如果未提供初始化式,則編譯器自動初始化為0。 拷貝建構函式      A(A copy){…};是不允許的,如果允許,會造成無限的遞迴調用。正確的形參為const A&

Effective C++ 小筆記:條款18-25(第四章 設計與聲明)

條款20:寧以pass-by-reference-to-const 替換 pass-by-value  一般而言,pass-by-value 需要耗費調用拷貝建構函式和解構函式的代價。當傳回值以value返回時也同樣。  以by reference 方式傳遞參數還可以避免slicing(對象切割問題)。當一個derived class 對象以by value方式傳遞給一個函數類型為base class的形參,base class 建構函式會被調用,則造成derived對象被切割為base對象。 

c++ int to string(整型到字串)

1.   int sprintf( char *buffer, const char *format [, argument] ... );      <stdio.h>例如:      int ss;      char temp[64];      string str;      ss = 1000;      sprintf(temp, "%d", ss);      string s(temp);       //調用string的方法     

C/C++中的聯合 union

聯合(union)在C/C++裡面見得並不多,但是在一些對記憶體要求特別嚴格的地方,聯合又是頻繁出現,那麼究竟什麼是聯合、怎麼去用、有什麼需要注意的地方呢?就這些問題,我試著做一些簡單的回答,裡面肯定還有不當的地方,歡迎指出! 1、什麼是聯合?    “聯合”是一種特殊的類,也是一種構造類型的資料結構。 在一個“聯合”內可以定義多種不同的資料類型, 一個被說明為該“聯合”類型的變數中,允許裝入該“聯合”所定義的任何一種資料,這些資料共用同一段記憶體,已達到節省空間的目的(還有一個節省空間的類型:

C++中迭代器

C++中的容器  標準序列容器:vector、string、deque、list  標準關聯容器:set、multiset、map、multimap 迭代器的分類  根據迭代器所支援的操作,可以把迭代器分為5類。  1、輸入迭代器:是唯讀迭代器,在每個被遍曆的位置上只能讀取一次。  2、輸出迭代器:是唯寫迭代器,在每個被遍曆的位置上只能被寫一次。  3、前向迭代器:兼具輸入和輸出迭代器的能力,但是它可以對同一個位置重複進行讀和寫。但它不支援operator--,所以只能向前移動。  4、雙向迭代

C++ 中的強制類型轉換

  顯示轉換也成為強制類型轉換(cast),包括以下列名字命名的強制類型轉換操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。 1. const_cast  const_cast<TYPE> (object);    The const_cast keyword can be used to remove the const or volatile property from an object. The target

C++定義隱式轉換函式

  C++中單參數建構函式若不聲明為explict,在合適的場合可以產生隱式轉換:由成員變數類型轉換為類類型。  下面的代碼展示如何?反向的轉換: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 void changeFontSize(FontHandle f, int newsize); 2 class Font{ 3 public: 4  

總頁數: 4314 1 .... 1015 1016 1017 1018 1019 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.