none
在C++/CLI中,如何获得C++中指针的值? RRS feed

  • 问题

  • Native C++ cpp file:

    #include "stdafx.h"
    #include <iostream>
    int strcpyTest(int dest, int *sour)
    {
        int s = dest + 10;
        std::cout << "s" << s << std::endl;
        std::cout << "&s" << &s << std::endl;
        sour = &s;
        int x = *sour + 20;
        std::cout << "sour" << sour << std::endl;
        std::cout << "*sour" << *sour << std::endl;
        return x;
    }

    C++/CLI h file:

    #pragma once
    using namespace System;
    using namespace System::Runtime::InteropServices;
    namespace SubFunction {
        public ref class Test
        {
        public:
            int StrTest(int d);
            int xxx;
        };
    }
    

    C++/CLI cpp file:

    #include "stdafx.h"
    #include "CPlusPlus.h"
    #include "SubFunction.h"
    int SubFunction::Test::StrTest(int d)
    {
        int y;
        int dd = strcpyTest(d, &y);
        xxx = y;
        return dd;
    }
    

    C# cs file:

            private void button1_Click(object sender, EventArgs e)
            {
                int a = 15;
                int b = 20;
                Test ts = new Test();
                int c = ts.StrTest(a);
                int d = ts.xxx;
                MessageBox.Show(c.ToString());
                MessageBox.Show(d.ToString());
            }

    第一次点击按钮时,MessageBox中显示的d即ts的"xxx”是指针地址,再次点击按钮是,它总是显示为0。这是为什么?我接触C++少,不是很不明白。该如何获得C++中的那个“sour”的值?


    努力~

    2018年9月29日 13:16

答案

  • 那你strcpyTest函数中修改成这样即可:
    if(NULL != sour) *sour = s;

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 zjyh16 2018年10月1日 2:47
    2018年9月30日 7:49
    版主

全部回复

  • 您是想获取strcpyTest函数中的局部变量int类型变量名为s的地址?
    *sour = &s; ??

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2018年9月29日 15:25
    版主
  • 您是想获取strcpyTest函数中的局部变量int类型变量名为s的地址?
    *sour = &s; ??

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    我是想获得strcpyTest中s的值,不是地址,是否可以得到?或者是得到一个s副本的值。

    努力~

    2018年9月30日 0:37
  • 那你strcpyTest函数中修改成这样即可:
    if(NULL != sour) *sour = s;

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 zjyh16 2018年10月1日 2:47
    2018年9月30日 7:49
    版主