Tach1banA
急了急了
2015-07-15 04:05
采纳率: 40%
浏览 3.4k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • oyljerry
    oyljerry 2015-07-15 04:10
    已采纳

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

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

    点赞 评论
  • suiyunonghen
    不得闲 2015-07-15 04:11

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

    点赞 评论
  • lx624909677
    lx624909677 2015-07-15 04:11

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

    点赞 评论
  • wenwuwenwuwenwu
    三叶草创意工作室 2015-07-15 04:12

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

    点赞 评论
  • frank_20080215
    frank_20080215 2015-07-15 04:22

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

    点赞 评论
  • gsmqzyz
    Ainuokema 2015-07-21 04:07

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

    点赞 评论
  • u013485543
    谁见过风 2015-08-04 08:19

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

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

    点赞 评论
  • liqinglinde
    liXXlin 2015-08-05 08:02

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

    点赞 评论
  • lingzhu111
    lingzhu111 2015-08-07 08:44

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

    点赞 评论

相关推荐