1樓:
這是ansi 跟unicode編碼的差異造成的
具體的講,vc2010預設的編碼方式是unicode,這種編碼方式對每個字元分配2個位元組,我們稱之為wchar寬字元
而如果是從c語言開始學起,那麼我們定義字元都用char a;這是ansi版本的,這種編碼方式對通常的字母、數字等是1個位元組的,對漢字是2個位元組的。
解決辦法:
在tchar.h中,定義了1種通用的字元型別:tchar
如果編譯器是unicode版本的,tchar被typedef為wchar
如果編譯器是ansi版本的,tchar被typedef為char
而且,很多c語言的庫函式也都有其通用形式,如strcpy()的通用形式為_tcscpy()
另外text巨集可以根據不同版本將字串常量也相應的轉化
所以,在**中,使用tchar 定義字元形變數,使用text巨集處理字串常量,使用庫函式的通用形式,就可以完美解決這個問題,實現1個源**,既可以按unicode編譯,又可以按ansi編譯
vc6.0中在工程--設定--c/c++--前處理器,定義識別符號:unicode,_unicode就可以設定按什麼編碼進行編譯,vc2010我沒設定過,不清楚位置在哪,應該差不多
例如:程式模板應該是這樣的:
#include
tchar sz[50];
tchar *p=text("字串");
_tcscpy(sz,p);
2樓:匿名使用者
const char* 和const wchar_t*是不同型別的指標。char每個字元佔一個位元組,
wchar_t每個字元佔2個位元組,當然就不能用const char* 初始化const wchar_t*了。
3樓:卡么四
wchar_t str[10] = _t("my string");
加 _t 表示unicode寬字元
char *const p;與 const char * p;的區別
4樓:北漂碼農
const char *p;的意思是p指向的目標空間的內容不可變化,char * const p;的意思是指標p的值不可變,但它指向目標的值可變。
1、char * const p : 定義一個指向字元的指標常數,即const指標,其實const 放在p前證明p是一個const,p是不允許改變的。
2、const char* p : 定義一個指向字元常數的指標,const 是c描述char的,char是const,所以指標可變。
擴充套件知識:
char const* p : 等同於const char* p;const char **p是一個指向指標的指標,那個指標又指向一個字串常量,char ** p也是一個指向指標的指標,那個指標又指向一個字串變數。
5樓:匿名使用者
前者定義p為常量,即只能單向賦值一次,p++為p=p+1,重複賦值給常量,出錯,後者p為地址變數,地址變數是指向該變數的儲存地址值如:4b3f6a,不能賦給一個字元值(字元相當於ascii表中對應的整數)如強制賦值,會把原地址變數p變為一個兩位數的整數,造成地址指標溢位。而p++,則表示把該地址變數向下一個儲存單元移動一位,如4b3f6a到4b3f6b.
所以合法。
6樓:漸進_恐慌
const char * p等價於 char const *p ,定義出來的指標可以p++;
char * const 定義出來的指標不可以++;
const 表“只讀”
7樓:匿名使用者
char *const p 修飾指標為常量 指標指向內容可以是變數~既 p++這樣的操作不合法 *p='3' 合法
const char * p 是p指向的內容是常量~p是變數~
~既 p++合法 *p='3' 不合法
計算機二級c語言現在用vc2019,可我買到的教材是vc6 0的,會不會發生衝突呢?或者不同呢
沒有什麼衝突,c語法跟編譯器無關。非要說衝突,那就是不同的編譯器,對於檔案字尾,檔案格式等有要求。不過就2010和6.0來看,應該是一樣的,沒有啥區別。二級階段沒什麼區別 可以用你也可以自己裝乙個vs,然後照著vc的書學,如果有什麼調不通的 基本不會有 再來問 計算機二級c語言選擇題是不是沒辦法用v...
vs2019中開發c 和在vc 6 0中有什麼不同
microsoft visual c 2005 提供了強大和靈活的開發環境,可用於建立基於 microsoft windows 和基於 microsoft net 的應用程式。它既可以用作整合開發系統,也可以用作一組獨立的工具。visual c 包含下列元件 visual c 2005 編譯器工具。...
VC中的含義
表示位域 這是呼叫api全域性函式 setwindowtext hwnd,m strresult 設定hwnd的標題為m strresult,setwindowtext,呼叫系統api 沒有這四個點,則是呼叫mfc中cwnd類的成員方法,格式setwindowtext m strresult 隱含t...