Time of Update: 2018-12-06
file1.c1 int arr[80];file2.c1 extern int *arr;2 int main() 3 { 4 arr[1] = 100;5 printf("%d\n", arr[1]);6 return 0; 7 } 該程式可以編譯通過,但運行時會出錯。為什麼呢?原因是,在另一個檔案中用 extern int
Time of Update: 2018-12-06
題目: 寫一個函數,返回它自身,方法用C或者C++即可。方法一: 用C++中仿函數的方法,來實現返回自身的引用。 1 #include<iostream> 2 using namespace std; 3 4 class Fang { 5 public: 6 Fang& operator()(){ 7 cout << "a" <<endl; 8 return *this; 9 }10
Time of Update: 2018-12-06
額,有沒有想過main函數能不能聲明呢?咱們來試試啊!1 #include <iostream>2 using namespace std;3 4 int main();5 6 int main(){7 system("pause");8 return 0;9 }完全沒有問題,可見,main也是一個很普通的函數啊!那普通函數能不能調用main函數呢?咱們再來試試啊! 1 #include <iostream> 2 using namespace std;
Time of Update: 2018-12-06
記憶體結構體=>檔案#include <stdio.h>#include <stdlib.h>const char* fileName = "/home/fnst/temp/dwntest/file.bin";struct Person{ char sex; int age;};int main(){ /*simulate the comtb in the memory*/ struct Person person;
Time of Update: 2018-12-06
芝姐學C++了,下午寫了一段C++程式來學習C++文法,下面我們來看她寫的代碼:1 int *ptr = new int[4];2 *(ptr++) = 3;3 cout<<*ptr<<endl;4 5 delete[] ptr;首先,這段程式的輸出是錯誤的,而且不能正確的運行成功,可疑的是,編譯是完全沒有錯誤的。下面是運行:上面的代碼為什麼會有錯誤呢?我們Debug一下,在第一行打上斷點:1 int *ptr = new int[
Time of Update: 2018-12-06
其實沒有特意的想去研究研究C++的左值與右值,但是學習小組在研究引用的時候,發現右值引用這個大坑,而右值引用又是C++11才提出的,看了看,還是總結下一、左值與右值的定義 在不同的C++標準裡,對左值和右值的定義是有所不同的。C++03版: ①對於一個運算式,其不是左值就是右值; ②左值是對象(指標,對象執行個體)或者函數(比如返回引用的函數,這裡有一點很重要只有聲明沒有初始化的就不能成為左值,比如char* p;初始化為空白*p不是左值,因為*p不是對象)。一些右值也是對象(
Time of Update: 2018-12-06
原文地址:http://coolshell.cn/articles/4119.html昨天寫了一篇如何學好C語言,就有人回複問我如何學好C++,所以,我把我個人的一些學習經驗寫在這裡,希望對大家有用。首先,因為如何學好C語言中談到了演算法和系統,所以這裡就只談C++語言。C++是最難的語言。這個世界上最難的程式設計語言可能非C++莫屬了。你千萬不要以為幾天就可以學好C++,C++的學習曲線是相當BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到了有點BT和恐怖的地步。我甚至認為C++並
Time of Update: 2018-12-06
寫了一個簡單的程式,但是考慮到有一些資訊是需要列印在控制台上的,就像在windows上啟動apache tomcat時控制台顯示的資訊一樣。琢磨一會兒之後,對printf進行了封裝,支援控制台列印日誌,支援輸出到檔案裡。不過控制台都是固定顏色的,不好看。於是在網上找了一下資料,printf還真支援輸出不同的顏色,如下:執行個體:printf("\033[1;33m Hello World. \033[0m \n");\033 [1; 33m xxxx|
Time of Update: 2018-12-06
關於函數的調用規則(呼叫慣例),大多數時候是不需要瞭解的,但是如果需要跨語言的編程,比如VC寫的dll要delphi調用,則需要瞭解。 microsoft的vc預設的是__cdecl方式,而windows
Time of Update: 2018-12-06
在一個國外網站上看到的,太NB了,要是這些問題都能完全搞懂的話,C++也差不多了How many ways are there to initialize a primitive data type in C++ and what are they?Why should you declare a destructor as virtual?What does it mean that C++ supports overloading?What are examples of overloadi
Time of Update: 2018-12-06
現在有一段源碼: 1 #include <iostream> 2 using namespace std; 3 4 #define DefFunc cout<<"Hello, Define function."<<endl;\ 5 cout<<"This is a defined function"<<endl; 6 7 int main(){ 8 DefFunc 9 DefFunc10
Time of Update: 2018-12-06
最近在搞C++的引用,閑來無事,順便寫寫引用的基礎知識引言:什麼是引用 引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。引用的格式: 資料類型 &引用變數名 = 目標變數名;第一章
Time of Update: 2018-12-06
序言條款06:若不想使用編譯器自動產生的函數,就應該明確拒絕 關於本條款,本人認為這樣做的目的只有一點:意圖:阻止你沒有明確定義的功能流向客戶手段:屏蔽C++偷偷為你的類提供的功能 比如“=”運算子是C++默默產生的,但是或許你根本不希望你的類可以這樣賦值。比如預設建構函式,或許你根本不希望使用者那樣構造你的對象。實現手段 要屏蔽C++偷偷為你提供的函數和運算子操作,可以有很多方法。但是作者提供的方法,我也覺得是最好的方法,是怎樣好的呢?我們來看程式碼範例吧! 1
Time of Update: 2018-12-06
先看兩段代碼。片段1: 1 union test{int b; char a[2];} shit; 2 3 int main(){ 4 5 shit.a[0]=10; 6 shit.a[1]=1; 7 cout<<sizeof(test)<<endl; 8 cout<<shit.b<<endl; 9 10 system("pause");11 return 0;12
Time of Update: 2018-12-06
1 #include <stdio.h> 2 #include <stdarg.h> 3 4 void WriteFormatted (FILE * stream, const char * format, ...) 5 { 6 va_list args; 7 va_start (args, format); 8 vfprintf (stream, format, args); 9 va_end (args);10 }11 12 int main ()1
Time of Update: 2018-12-06
其實這一點在C++的基礎類入門書,如C++ primer裡面也有說過,不過很少有人去注意而已,作者把這一點提出來,是為了提醒我們。這一條款的內容如下:就是說當你書寫下面的【程式碼片段1】的時候,其實經過編譯器處理後,你所書寫的代碼本質上是【程式碼片段2】:程式碼片段1(你親自手寫的):1 class A{2 3 };程式碼片段2(編譯器幫你產生的):1 class A{2 public:3 A() { ... }4 A(const A& rhs) { ... }5
Time of Update: 2018-12-06
前幾天,一個同事偶爾發出來一段有意思的代碼,之前從來沒見到過,算是收藏了,原來C中還可以這樣定義的code: #include<stdio.h>void function(arg1, arg2)int arg1;int arg2;{ printf("arg1=%d, arg2=%d", arg1, arg2);}int main(){ function(1,2); function(1); function(); return 0;}--------
Time of Update: 2018-12-06
一、C++介紹開始時,C++只是在C的基礎上加上物件導向的特性。最初名字:C++ with Classes目前:主要包括4個主要組成部分1)C區塊、語句、預先處理、內建資料類型、數組、指標等2)Object-Oriented C++這部分封裝了物件導向的部分,包括:Class(建構函式、解構函式)、封裝、繼承、多態、virtual函數(動態綁定)3)Template C++(泛型程式設計部分)模板編程4)STL(標準模板庫)容器(list,vector,set,map)、迭代器、演算法等
Time of Update: 2018-12-06
序言 看書是一件百味陳雜的事。看小說,心思專註時,你能從別人的故事裡流出自己的眼淚;看曆史,仰望星空時,你能從演變的滄海桑田裡發現現實的美好。看技術書籍,自己編樣本程式時,你能發現自己離大牛專家的距離有多遠,有時簡直是天壤之別,甚至感覺自己這輩子都無法企及那樣的高度。然而,我們仍不能停下自己的腳步,因為身邊的人都在往那個高度攀登著,因為高處的風景,至少,或許更加美好。本文主題 好了,廢話不多說,今天我們來看《Effective
Time of Update: 2018-12-06
概述 今天聽了項目組裡的C++高手講C++的異常,受益匪淺。果然,與高手一起才能學習到更多的東西。下面我就把這位高手介紹的C++異常處理分享給園子裡的博友們。什麼是異常呢?