目前分類:C/C++ (4)

瀏覽方式: 標題列表 簡短摘要

C 的標準函式庫提供了兩個非常好用的函式,可以快速的轉換字串成為數值。


char s[10];
int n;
int count = sscanf(s, "%d", &n); // 字串s轉數字n
int length = sprintf(s, "%d", n); // 數字n轉字串s


http://blog.urdada.net/2008/04/18/85/

prague12 發表在 痞客邦 留言(0) 人氣()

//----------------------------------------------
// 本文介紹:函數指標 in C++
// 函數指標 不等於 指標函數 , 函數指標還是個指標 相當於函數的進入點 , 功能上相當於C#的函數委派
// 函數指標對於 >> 1.類別內函數 2.外部函數 的使用方式
// 本文日期: 2012.02.10
// 本文作者: JK大仙
//----------------------------------------------

#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include
using namespace std ;
//===========class======================

class Cff // 這是一個類別 內部有一個運算用的函數 add_em(a,b)
{
private:
//--------------------
public:
static long add_em(int a, int b) // 這裡要特別注意 類別內部函數必須使用 static >> 新指標才能抓到這個類別內的函數地址
{ return((a+b));}

//-----------------------
//Cff(){;} 建構子 ,不寫 編譯器也會自動幫你加
};
//========/class /============================






//===========main=========================//外部函數 add2(a,b)
long add2_em(int a, int b) //外部函數不需要 static
{
return(((a+b)*2));
}
double (*flog)(double x); // 函數指標

void main()
{
//----------------------------------------------
long ( *math)(int a ,int b); // 注意 (*math)(,)參數型態要長的跟要指向的函數的(,)參數一樣才行
math = Cff::add_em ; // 指向類別內的自定函數 add_em

long ( *math2)(int a ,int b);
math2 = add2_em ; // 指向外部自定函數 add2_em

//---------------------------
flog = log; // 指向庫存函數
cout






>a ;
}

//================/main/=======================

prague12 發表在 痞客邦 留言(0) 人氣()

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
// " "表示當前指標位址
// //&a="1"
// //&a+1="0" = ptr 加1個size(a)單位大小=4x2=8Byte
// //ptr-1 ="2" 加1個size(ptr)單位大小=4Byte (int *ptr)


int a[] = {1,2}; // a的單位size 是4x2=8 Byte , &a=ff5C
int *ptr = (int*)(&a +1); // (a指標+1)意謂著 大小加size(a)的一個單位= 8Byte ,(&a+1)=ff64
int *ptr2=(ptr-1); // *ptr2=ff60 , ptr=ff64 >> (ptr-1)是根據ptr本身的size作為一個單位(int* ptr 是4Byte (in 32位元結構))
printf("%d",*(ptr-1 ));// "2"
printf("%d",*(ptr2-1 ));//"1"
return 0;
}

prague12 發表在 痞客邦 留言(1) 人氣()

參考 : http://archerworks.blogspot.com/2010/07/cstatic.html

有關C語言的static用法

1. 使用在全域變數或全域函式 (Global variable & Global function)
讓該變數(或該函式)的可視範圍只侷限在該檔案內,其他的 .c檔看不到此變數(或函式)的存在。
既使其他檔案用extern宣告也看不到!套句行話來說,他把Global的變數或函數變成了「internal linkage」,當Linker在找symbol時是會忽略它的。
(在C++中也相容這種用法,不過被視為比較不建議的舊的用法,C++比較建議使用unnamed namespace。)

使用時機:當此全域變數(或全域函式)不想被其他檔案引用和修改時,或者不同檔案可以使用相同名字的全域變數(或全域函式)而不會產生命名衝突。

2. 使用在函式內的區域變數 (Local variable)
因為區域變數預設就是動態變數,而在區域變數前加上static修飾字則會將變數由動態(dynamic)變數轉為靜態(static)變數,靜態變數的壽命(lifetime)與動態變數不同,靜態變數會一直存在,直到程式結束為止。

使用時機:這種很適合用來做統計次數的功能(某函式被呼叫幾次),例如以下的代碼...

prague12 發表在 痞客邦 留言(1) 人氣()