你懂得C++越多,它就傷害你越深

前些天有個朋友問我,要不要去讀讀《Effective C++》,我忽然給出一個建議:不要讀,最多看一下目錄就好了。作為一本非常受歡迎的C++教材,我為什麼要建議朋友不要讀呢?事後我反思了一下我的想法:《Effective

有人說Java比C++快?

    看到一篇讓我不爽的文章:http://www-128.ibm.com/developerworks/cn/java/j-jtp09275.html    Java的new應該和C++的object pool或者memory pool去比效能,而不是和malloc比效能。malloc更多的是一個作業系統API。    實際上我覺得自己很雞婆。Java比C++快這種論點,實在是只有傻瓜才會相信。但是現實是真的很多人相信這一點,而且我居然還跳出來解釋。   

C++和C#的效能比較

情境是這樣的,有個邏輯對象的結構如下:  struct Msg {   int type;   char name[12];   float height;   float width;   int count;   int flag;}  C++和C#分別來做這個對象的傳輸。 傳輸方面沒什麼好說的,是作業系統IO的事情,和語言無關。 下面是收到資料之後進行parse,為了對比,我們把資料parse一百萬次。 C++從socket收到char*

C 類型限定符const 和volatile

C 類型限定符const 和volatile1、const通常在聲明中,const出現在儲存類型之後,資料類型之前。如:static const int a=3;//a 是一個靜態儲存類型的整形常量由於已經用const限定了a的類型,我們可以對a進行初始化,但以後不能再對a賦值,增量和減量操作。雖然對使用const對變數作了限制,也不能在另一個聲明中用變數描述數組的大小。錯誤使用例1:const int k=3;int array[k];//錯誤因此,由const限定的變數與符號常量是不等價的。

[C++] unsigned是麻煩製造者

沒有什麼比signed和unsigned的區別更無味了。unsinged資料類型似乎沒有存在的必要。一、unsigned可以提供更大的正數範圍   反對:對於小資料來說,signed的範圍就足夠了;對於大資料來說,signed和unsigned所提供的範圍其實幾乎沒什麼區別。Int8,Int16, Int32,

[C++] Linux下的itoa函數

上篇文章說到linux需要itoa函數,下面我就提供一份跨平台的itoa函數。 //return the length of result string. support only 10 radix for easy use and better performanceint my_itoa(int val, char* buf){    const int radix = 10;    char* p;    int a;        //every digit    int len;   

[C++] 姍姍來遲的C++0x

最新訊息說ISO C++委員會批准了C++0x最終草案。最新的C++標準將在夏天發布,先前被臨時命名為C++0x的新標準將被稱為C++ 2011。 缺憾:Concepts不能出台錯過了一次給template升級的難得機會;typeof未能實現只拿出了一個decltype的廉價替代品;記憶體處理方面沒有解決根本問題(越界);異常處理方面幾乎沒改進。 亮點:auto關鍵字簡化了template編程;有了標準的線程和鎖;強型別的枚舉;從其他語言借鑒的一些文法糖;把一些早已是事實標準的東西放入了標準。 

對s3c2440 mmu.c的分析

/************************************************ NAME      : MMU.CDESC   :Revision : 1.0************************************************/#include "def.h"#include "option.h"#include "2440addr.h"#include "2440lib.h"#include "2440slib.h"#include

C可變參數個數

C可變參數個數C語言中有一種長度不確定的參數,形如:"…",它主要用在參數個數不確定的函數中,我們最容易想到的例子是printf函數。     原型:     int   printf(   const   char   *format   [,   argument]…   );       使用例:     printf("Enjoy   yourself   everyday!/n");     printf("The   value   is   %d!/n",   value);   

C語言的內嵌彙編

在內嵌彙編中,可以將C語言運算式指定為彙編指令的運算元,而且不用去管如何將C語言運算式的值讀入哪個寄存器,以及如何將計算結果寫回C 變數,你只要告訴程式中C語言運算式與彙編指令運算元之間的對應關係即可, GCC會自動插入程式碼完成必要的操作。 1、簡單的內嵌彙編 例:      __asm__

[C++] 有爭議的代碼風格

 "if (p == NULL)"和“if (NULL == p)”,哪種寫法是更好的代碼風格?有人認為“if (NULL == p)”可以避免==被寫成=,從而減少bug。但是我對一些優秀項目的代碼做了一下統計,發現:Linux kernel    12436   318glibc   3715    0在linux kernel裡面,"NULL =="只出現了318次,而glibc裡面"NULL =="根本就一次都沒有出現過。 因此我認為,基於代碼的可讀性的原因,“if (p ==

C++初始化成員列表

      在使用C++編程的過程當中,常常需要對類成員進行初始化,通常的方法有兩種:       第一種方法:       CMYClass::CSomeClass()   {             x=0;             y=1;   }   第二種方法:       CSomeClass::CSomeClass()   :   x(0),  

C程式儲存空間布局複習+備忘

BSS段:BSS段(bss segment)通常是指用來存放程式中未初始化的全域變數的一塊記憶體地區。BSS是英文Block Started by Symbol的簡稱。BSS段屬於靜態記憶體配置。資料區段:資料區段(data segment)通常是指用來存放程式中已初始化的全域變數的一塊記憶體地區。資料區段屬於靜態記憶體配置。程式碼片段:程式碼片段(code segment/text

C語言中結構體對齊問題

 C語言中結構體對齊問題 收藏 關於C語言中的結構體對齊問題1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( A)=6, sizeof(

c語言面試題—–指標篇

 c語言面試題-----指標篇 收藏   1. char * const p;  char const * p  const char *p  上述三個有什麼區別?  char * const p; //常量指標,p的值不可以修改  char const * p;//指向常量的指標,指向的常量值不可以改  const char *p; //和char const *p------------------------------------------------------2. char

)指標數組和數組指標(C)

針數組和數組指標(C) 收藏 //注意指標數組和數組指標分別是如何指向二維數組的#include <stdio.h>main(){    static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};/* 定義二維數組m並初始化*/     int (*p)[4];//數組指標  p是指標,指向一維數組,每個一維數組有4個int元素    int i,j;    int *q[3];//指標數組 q是數組,數組元素是指標,3個int指標    p=m;

多級反饋隊列調度演算法 C語言類比實現

多級反饋隊列調度演算法:1、設定多個就緒隊列,並給隊列賦予不同的優先順序數,第一個最高,依次遞減。2、賦予各個隊列中進程執行時間片的大小,優先順序越高的隊列,時間片越小。3、當一個新進程進入記憶體後,首先將其放入一個對列末尾,如果在一個時間片結束時尚未完成,將其轉入第二隊列末尾。4、當一個進程從一個對列移至第n個隊列後,便在第n個隊列中採用時間片輪轉執行完。5、僅當時間片空閑時,才調度第二個隊列中的進程。(1~i-1)空閑時,才調度i,如果處理機正在第i隊列中運行,又有新進程進入優先權較高隊列,

棧(C語言實現)

資料結構——棧(C語言實現) 1 /*stack標頭檔*/ 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 typedef struct Node 6 { 7 int data; 8 struct Node* next; 9 }StackNode;10 11  void initStack(StackNode* top)12 { 13 top->next=NULL;14 }15 16

C++ const 限定符總結

1.  定義const對象const 把一個對象轉換成一個常量:   const int bufSize = 512;定義bufSize為常量並初始化為512. 因為常量在定義後就不能修改,所以定義時必須初始化。  2 const 引用 const int ival = 1024;const int &refVal = ival;const 引用可以綁定到不同但相關的類型的對象或綁定到右值int i=42; double dval = 3.14;const int &r =

C++運算子優先順序列表

PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;

總頁數: 4314 1 .... 1435 1436 1437 1438 1439 .... 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.