关于char * ch指针和char ch [10]数组的区别

作者:用户 来源:互联网 浏览:456 次 时间:2016-01-18 10:31:42

指针cc++数组c语言

关于char * ch指针和char ch [10]数组的区别 - 摘要: 关于char*ch指针和charch[10]数组的区别charch1[10];char*ch2;如果现在要将一个c风格字符串赋给这两个对象,voidcopy1(charch1[10]char*temp

问题描述

关于char * ch指针和char ch [10]数组的区别

char ch1[10];
char * ch2;
如果现在要将一个c风格字符串赋给这两个对象,
void copy1(char ch1[10]char * temp)
void copy2(char * ch2char * temp)
为什么后者可以直接ch2=temp而前者只能用strcpy?

解决方案

ch2是指针,所以=temp,其实做的是指针地址赋值而已,这样ch2也指向temp那一块内存

而ch1是一个数组,你要给它赋值,就需要把内容复制到数组中,所以需要strcpy

解决方案二:

ch2是指针,放的是地址,用ch2=temp来赋值,是把temp的地址赋给ch2,并且ch2自己是没有空间来存放数据的,之所以不能ch1=temp这么写,是因为ch1有自己的空间,如果改变他的地址,那么这个地址指向的空间也就变了

解决方案三:

ch2存储的是地址,也就是指向字符串首地址的一个地址变量来的,因为temp的类型和ch2一样,所以可以直接赋值,char ch1[10],变量存储的是普
通的数值,并不是地址,所以使用strcpy

解决方案四:

区别不大。只是char * ch指针很容易修正而去指向其他char类型的变量。且维度不需要考虑。
char ch[10],ch的维度是固定,不太灵活。
两者的指针操作差不多。

解决方案五:

你直接ch1=temp估计也行,因为ch2是指针,直接取了字符串的首地址,而你直接用ch1也是取了ch1[]数组的首地址,应该也行

解决方案六:

ch2是指针,可以赋值=temp,这样ch2也指向temp那一块内存地址.

而ch1是数组,给它赋值,就需要把内容复制到数组中,所以需要strcpy.

解决方案七:

你没有理解指针的含义,指针只是指向某一地址,数组则表达的含义是存储的数据。

解决方案八:

指针是指向地址, p1 = p2 p2的地址赋给p1
数组 及地址是固定的。 不能更改。只能修改里面的内容。

解决方案九:

Ch2是指针,可以直接把指针变量赋值给他。。

【云栖快讯】你想见的Java技术专家都在这了,向大佬提问,有问题必答  详情请点击
云栖社区(yq.aliyun.com)为您免费提供关于char * ch指针和char ch [10]数组的区别相关信息,包括 指针cc++数组c语言 的信息 ,所有关于char * ch指针和char ch [10]数组的区别相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_92129,您可以点击关于char * ch指针和char ch [10]数组的区别-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航