| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1015 人关注过本帖
标题:指针是一把双刃剑!
只看楼主 加入收藏
天生丽质
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:50
注 册:2015-7-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
指针是一把双刃剑!
程序代码:
#include<iostream>
using namespace std;
char *getname(void);
int main ()
{
    char *name;
    name = getname();
    cout << name << " at " << (int *)name << endl;
    delete [] name;
    name = getname();
    cout << name << " at " << (int *)name << endl;
    delete [] name;
    return 0;
}
string *getmane()
{
    char temp(80);
    cout << "enter last name : ";
    cin >> temp;
    char * ps =new char[strlen(temp)+1];//错误语句
    strcpy(ps,temp);
    
    return ps;
}

提示的错误为:F:\test\test.cpp(245) : error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
想请教大家  为什么会出错?
搜索更多相关主题的帖子: 双刃剑 
2015-08-23 22:15
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:10 
#include <iostream>
#include <cstring>
using namespace std;
char * getname(void);
int main()
{
    char * name;
    name = getname();
    cout << name << " at " << (int *)name << "\n";
    delete [] name;
    name = getname();
    cout << name << " at " << (int *)name << "\n";
    delete [] name;
    return 0;   
}

char * getname(void)
{
    char temp[80];
    cout << "Enter last name:";
    cin >> temp;
    char * pn = new char(strlen(temp)+1);
    strcpy(pn,temp);
    return pn;
}
2015-08-23 22:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 楼主 天生丽质
你心目中的temp是什么?实际上写出来的又是什么?写成了那样,看看书就知道那个格式是什么意义。

授人以渔,不授人以鱼。
2015-08-23 22:31
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
抄都抄错
2015-08-23 22:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
抄错有什么奇怪,不出错怎么学得到本领。能自己解释并解决错误,才是学习最需要的过程。永远不犯错,是学不到的。

授人以渔,不授人以鱼。
2015-08-23 22:43
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
楼主注意getname和getmane的区别。不过你那句报错,是因为你定义字符数组时把方括号写成了圆括号。
2015-08-23 22:46
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
确实,错误是pass它妈!楼主应该英语不怎么好!
编译器以经告诉楼主用了C风格的函数
楼主好像....
2015-08-23 22:50
醒山
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:9
帖 子:463
专家分:2071
注 册:2015-5-25
收藏
得分:0 
括号错了把[]改成()就好了,貌似[]好像只在数组中见过
2015-08-23 23:08
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
楼主不要生气,我五十步笑一百步了,SORRY
2015-08-23 23:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用醒山在2015-8-23 23:08:05的发言:

括号错了把[]改成()就好了,貌似[]好像只在数组中见过

学C++不知道圆括号是什么意思,那就是把C++当C学了。最糟糕的正是学过C之后学C++,自以为差不多,很多知识点跳过,拿C的知识套到C++上面去,结果是错的,还不知道错在哪里,更不知道应该返回去看书。

授人以渔,不授人以鱼。
2015-08-23 23:16
快速回复:指针是一把双刃剑!
数据加载中...
 
   



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

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