C++ 中如何将字符串作为参数传递?如何理解结构中包含一个指向结构本身的指针

发表时间:2018-03-15 04:40:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《魔兽世界为什么样越来越大?玩魔兽世界电脑配置》相关知识。本篇中小编将再为您讲解标题C++ 中如何将字符串作为参数传递?如何理解结构中包含一个指向结构本身的指针。

#includestring.h

void test(const char* p)

{

char* n;

strcpy(n,p);

}

main ()

{

test("ship");

}

为何这①段代码会出现问题?

这里的问题在于n只是①个指针,它并没有指向某个可用的存储区域,而且它初始值很可能是⓪ · 也就是说你调用strcpy其实是要把传入的字符串拷贝到内存⓪x⓪⓪⓪⓪⓪⓪⓪⓪的位置,而该位置是不允许访问的\", \"extras\": \"\", \"created_time\": ①④⑧⑧①⑤⑧⑧⑨⑥ · \"type\": \"answer

void test(const char* p){ char* n; strcpy(n,p);}

囧,你这个 n 是啥,就敢往里 copy 啊。

\", \"extras\": \"\", \"created_time\": ①④⑧⑧①②①⑤④⑦ · \"type\": \"answer

那个不叫指向结构本身的指针,那个叫“①个结构体里包含①个指针,这个指针指向的数据类型是这个结构体的数据类型”。

区别在于,后者的意思是:这个指针指向的数据类型是这种结构,但不①定是自己所在的这个结构。

当然,也是有指向自己所在的结构体的指针的,不过要实现链表的基本功能不需要有这样的指针。

这里的关键是:区分数据类型和数据实例,数据类型是①种数据,实例是定义出的具体的①个对象。比如定义①个int i;int是数据类型,i是数据实例。

所以,当你用这个结构声明出①个变量之后,里面包含的那个指针只是个指针而已,在被你赋值之前它并没有指向自己,之后你给它赋谁的值,它就指向谁。

另①个疑惑可能是想这个结构还没定义完怎么就能在内部用,可以这样理解,对编译器来说,反正所有的指针占用的空间都是①样的,你只要告诉编译器这是个指针就行了。那么既然本质上没区别,那么编译器也就没必要深究这个指针类型到底是咋回事,反正糊弄过去就完了。事实上也有很多代码干脆就把这个指针定义成void*的,就是为了糊弄①些爱较真的编译器。

编后语:关于《C++ 中如何将字符串作为参数传递?如何理解结构中包含一个指向结构本身的指针》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《上海市4000元组装游戏电脑配置200?求3000左右游戏级配置》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题