注册 登录
编程论坛 C++教室

指针是一把双刃剑!

天生丽质 发布于 2015-08-23 22:15, 1015 次点击
程序代码:
#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
想请教大家  为什么会出错?
14 回复
#2
hjx11202015-08-23 22:29
#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;
}
#3
TonyDeng2015-08-23 22:31
回复 楼主 天生丽质
你心目中的temp是什么?实际上写出来的又是什么?写成了那样,看看书就知道那个格式是什么意义。
#4
hjx11202015-08-23 22:33
抄都抄错
#5
TonyDeng2015-08-23 22:43
抄错有什么奇怪,不出错怎么学得到本领。能自己解释并解决错误,才是学习最需要的过程。永远不犯错,是学不到的。
#6
yangfrancis2015-08-23 22:46
楼主注意getname和getmane的区别。不过你那句报错,是因为你定义字符数组时把方括号写成了圆括号。
#7
hjx11202015-08-23 22:50
确实,错误是pass它妈!楼主应该英语不怎么好!
编译器以经告诉楼主用了C风格的函数
楼主好像....
#8
醒山2015-08-23 23:08
括号错了把[]改成()就好了,貌似[]好像只在数组中见过
#9
hjx11202015-08-23 23:12
楼主不要生气,我五十步笑一百步了,SORRY
#10
TonyDeng2015-08-23 23:16
以下是引用醒山在2015-8-23 23:08:05的发言:

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

学C++不知道圆括号是什么意思,那就是把C++当C学了。最糟糕的正是学过C之后学C++,自以为差不多,很多知识点跳过,拿C的知识套到C++上面去,结果是错的,还不知道错在哪里,更不知道应该返回去看书。
#11
醒山2015-08-23 23:19
以下是引用TonyDeng在2015-8-23 23:16:01的发言:


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

版主说的对
#12
天生丽质2015-08-23 23:30
无语了,我这种小错误。。。。。好想马上删贴。😂。。。
#13
天生丽质2015-08-23 23:40
代码改来改去没有认真检查,小细节出了很多错误。。。
发贴之前没有认真检查错误,真是对大家的不尊重!sorry!
#14
农民工2015-08-24 08:42
楼主不必自责,我以前学习时 打 cos打成 c0s (那种老式编译器0 o看上去差不多,而且两者在分布在键盘相似位置),查死了都没找出错误
#15
天生丽质2015-08-24 11:18
回复 14楼 农民工
谢谢~
做码农的真的要很细心的
正在努力改正自己的粗心
加油
1