问题描述
- 关于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是指针,可以直接把指针变量赋值给他。。
时间: 2024-08-03 16:17:37