程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 關於c#調用C++代碼的一些應用的體會,

關於c#調用C++代碼的一些應用的體會,

編輯:C#入門知識

關於c#調用C++代碼的一些應用的體會,


1.dll函數的導入:
    關鍵字:unmanaged code ; managed code;
    具體應用類:System.Runtime.InteropServices
    具體使用方法:
    [DllImport("muParser.dll", EntryPoint = "mupSetExpr", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern void mupSetExpr(void* parser_handle, StringBuilder a_szExpr);
    注意點:EntryPoint 同函數名  CharSet 注意 不要輕易使用 uncode.
           函數參數 要使用指針時 應該使用 unsafe 

2.函數指針的使用:
    關鍵字:delegate
    具體使用方法:
    c++: typedef double (*fun_type1)(double); 
    c#:public delegate double  fun_type1(double);
    注意點:c#使用委托 方法,實現函數指針,使用時 c++中的指針去掉
           參數定義很c++一樣
           
3.定義指針值
    關鍵字:fixed
    具體使用說明:主要是想返回指針地址,c#中好像不支持 &(可能不准確)
                 直接給指針賦值也不行
    example:
    public double* AddVariable()
    {
         fixed ( double * ptrVar = &afValBuf )
         {
             return ptrVar;
         }        
    }
    說明:相關這個指針變量都要在 fixed 裡面
    
4.關於c++函數參數是 char* 的操作
    關鍵字:StringBuider
    具體使用說明:c++中參數char*操作是 一個字節一個字節讀取的,
                 c#中的String 是 兩個字節讀取的 所以不能用
                 所以只用StringBuilder替代
                 
                 現在還沒有找到更好的方法,如果有的話告之


5.關於dll的導入
     如果c++中dll 不是組件形式(或者COM),那麼不能直接通過.NET的reference 直接應用
     我的解決方法:
         應用平台:.net website
         方法:  建立ClassLibrary 將要應用的dll放在bin下 然後編譯工程 使用新生成的dll 就可以了
         
6.關於c#中使用指針:
      關鍵字:unsafe 
      使用方法:在需要使用指針的地方 加 unsafe


對於c語言

while((c=getchar())!='\n')
這句呀
你可以理解為
當系統函數getchar在讀入字符時
未出現換行
即回車
則循環不斷
if((c>='a' && c<='z')||(c>='A' && c<='Z'))
這句是if的大條件
你所輸入的字符必須滿足26個字母中的一個
大小寫不限
至於最後一個問題
我有點暈了
我就搞不懂LZ為什麼就和V干上了
if (c>'Z' && c<='Z'+4||c>'z')
這句相當於是if((c>='a' && c<='z')||(c>='A' && c<='Z'))的else if語句鏈的第二個條件
 

對於c語言中的break用法

break語句
break語句通常用在循環語句和開關語句中。當break用於開關語句switch中時,可使程序跳出switch而執行switch以後的語句;如果沒有break語句,則將成為一個死循環而無法退出。break在switch 中的用法已在前面介紹開關語句時的例子中碰到,這裡不再舉例。
當break語句用於do-while、for、while循環語句中時,可使程序終止循環而執行循環後面的語句, 通常break語句總是與if語句聯在一起。即滿足條件時便跳出循環。
注意:
1) break語句對if-else的條件語句不起作用。
2) 在多層循環中, 一個break語句只向外跳一層。
對於你的問題,就是跳出for循環,執行循環後面的語句,即str[i++] = '.';語句
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved