char怎么转成char*我这么写的:unsafe......
string read = “123”;
char* data = read[0];
第二行报错,提示无法将char隐士转为char*请问怎么转??

解决方案 »

  1.   

    char* data = read[0];
    改成
    unsafe char* data = read[0];
      

  2.   

    这样写呢            string str = "aaabbbccc";
                char c = str[0];
                char* p = null;
                p = &c;
                Console.WriteLine(*p);
      

  3.   

    程序是这样的:
     private unsafe void button1_Click(object sender, EventArgs e)
            {
                string read1 = textBox1.Text.ToString();
                char* data = read1[0];//////////这里报错:无法将char隐式转为为char*
                string read2 = textBox2.Text.ToString();
                char length = read2[0];
                int crcjieguo = CRC16(data, length);
                textBox3.Text = crcjieguo.ToString();
            }
      

  4.   

    楼上都错,是缺少fixed造成的。
    fixed(char* data = read[0])
    {}
      

  5.   

    楼主那个写法也错,应该用地址,害我复制了个错误的代码:
    fixed(char* data = &read[0])
    {}
      

  6.   

    程序是这样的:
    private unsafe void button1_Click(object sender, EventArgs e)
            {
                string read1 = textBox1.Text.ToString();
                char* data = read1[0];/////////这里报错:无法将char隐士转为为char*
                string read2 = textBox2.Text.ToString();
                char length = read2[0];
                int crcjieguo = CRC16(data, length);
                textBox3.Text = crcjieguo.ToString();
            }
      

  7.   


    这样才是真正的地址
    fixed(char* p = read)
    {}
      

  8.   


    LZ是要read[0]里面存储的那个地址,所以推荐这个答案
      

  9.   


                string s1 = "123";
                string s2 = "123";
                string s3 = s2;
                fixed (char* p = s1)
                    *p = '5';
                Console.WriteLine(s1);
                Console.WriteLine(s2);
                Console.WriteLine(s3);这个例子如果搞明白为什么修改了s1之后,s2、s3也会变成523,那么C#中字符串字符的指针就容易搞清楚。