| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 757 人关注过本帖
标题:有关char&的代码-------为何以下的代码不能通过编译,请高手帮忙
只看楼主 加入收藏
xs100
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
有关char&的代码-------为何以下的代码不能通过编译,请高手帮忙
//======为何以下的代码不能通过编译   问题出在哪里?请赐教,谢谢。
#define WIN32_LEAN_AND_MEAN  
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>


#ifdef MYLIBAPI_C
#else
#define MYLIBAPI_C extern "C" __declspec(dllexport)
#endif

 char  *zz;
MYLIBAPI_C int __stdcall Set(char& yy,int xx)
{
    zz=&yy;
    return(xx);// A
}
//----A---------------------以上能通过编译------传出“ int xx”
MYLIBAPI_C char __stdcall Get()
{
    return(zz);// B
}
//----B---------------------不能通过编译 ------为何不能-传出 “char& yy ”
搜索更多相关主题的帖子: char 代码 编译 
2010-04-18 14:55
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:20 
MYLIBAPI_C char __stdcall Get()
{
    return(zz);// B
}
  返回 char  
  函数返回
zz      char*       *zz
类型匹配

2010-04-18 19:10
xs100
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-4-18
收藏
得分:0 
谢谢.
目的是要传出zz地址中的全部的字符串,
改*zz ---------------这样能通过编译,但传出的是只有1个字节!
为何不是全部的字符串呢???不知问题究竟出在哪里?
2010-04-18 20:57
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:0 
如果要串的话改成
MYLIBAPI_C char* __stdcall Get()
{
    return(zz);// B
}
2010-04-18 23:26
xs100
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-4-18
收藏
得分:0 
回复 4楼 yyblackyy
yyblackyy大侠:
   您好,经你的指点,有了新的进展,现初步结果如下:
 char  *zz;
  MYLIBAPI_C int __stdcall Set(char& xx,int aa)//char& xx的字符串是-----"173210|A..........."
{
   zz=&xx;
   return(aa);// A
}               
MYLIBAPI_C char* __stdcall Get()
{
     return(zz);//B 怎么会显示成------“T“呢
//----------------------------------------------如果在域内如下赋值,却是“正确的!
    //    zz="hhhhhhhhhhhhhhh";return(zz);//显示成------“hhhhhhhhhhhhhhh“正确!
    //    zz="IT----之星"; return(zz);包  //显示成------“IT----之星"正确!

}
请yyblackyy大侠进一步指导,我会努力练习之,谢谢.
2010-04-19 14:09
xs100
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-4-18
收藏
得分:0 
回复 5楼 xs100
//char& xx的字符串是------动态数据
//将char& xx赋值为"IT----之星"字符串,同样显示的是"T",看来动态数据与静态数据没有区别,同样存在问题,
不知问题错在哪里?请指点迷津,为何,谢谢


[ 本帖最后由 xs100 于 2010-4-19 15:26 编辑 ]
2010-04-19 14:25
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:0 
char  *zz;
  MYLIBAPI_C int __stdcall Set(char& xx,int aa)//char& xx的字符串是-----"173210|A..........."
{
   zz=&xx;
   return(aa);// A
}
*******************************               
char  *zz;
  MYLIBAPI_C int __stdcall Set(char& *xx,int aa)//char& xx的字符串是-----"173210|A..........."
{
   zz=xx;
   return(aa);// A
}               
2010-04-19 18:50
xs100
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-4-18
收藏
得分:0 
回复 7楼 yyblackyy
char  *zz;
//  MYLIBAPI_C int __stdcall Set(char& xx,int aa)//char& xx的字符串是-----"173210|A..........."
    MYLIBAPI_C int __stdcall Set(char *xx,int aa)//char& xx的字符串是-----"173210|A..........."
//-----以上两语句,好象没区别?
    {
//    zz=xx;                //A
    zz="hhhhhhhhhhhhhhh"; //B
   return(aa);
}               
MYLIBAPI_C char* __stdcall Get()
{
//     return(zz);//A显示成------“T“或 “K“或 "........乱码"
       return(zz);//B显示成------“hhhhhhhhhhhhhhh“正确!  
}
在写入软件中,写xx[]=={"hhhhhhhhhhhhhhh"},Get()不能正确显示?
而在MYLIBAPI_C int __stdcall Set(char *xx,int aa)//中写zz="hhhhhhhhhhhhhhh"; //B,却能正确显示,
好象还是   MYLIBAPI_C int __stdcall Set(char *xx,int aa)
{...............}中的问题???
您看该如何处理?


[ 本帖最后由 xs100 于 2010-4-20 07:51 编辑 ]
2010-04-19 20:19
快速回复:有关char&的代码-------为何以下的代码不能通过编译,请高手帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016714 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved