C语言指针和数组

  指针是一个变量,它的值是一个对象在内存中的位置,可以随时修改指向它处。数组的名字等于数组首地址,相当于一个指向该数组对象的一个指针,但是它是一个不能修改的量,故不能重新赋值,这也能说明为什么不能给数组直接赋值,只能通过其它方式进行。同时它还有和指针不同的属性,比如它的长度就是数组对象的长度。

字符数组的赋值
  字符数组不能直接赋值[定义时初始化除外],而必须通过其它方式进行,下面是三个办法:
  1. 循环赋值
  2. strcpy函数
  3. sprintf函数
  注:为什么定义时可以直接赋值,是因为在定义时编译器可以直接将初始化对象的地址赋给数组。其它时候给数组指针赋值是非法的。

为什么字符数组不能用等号比较
  因为数组变量的值是数组的首地址,所以比较结果永远为假。

指针数组和二维数组
  二维数组在定义时,编译器给它分配指定的连续内存空间。指针数组则分配数组维数决定的空间,然后根据每个数组对象的具体内容分配其它空间,并且这些空间可以不连续。

修改数组和指针指定的字符串中的某一位时,数组可以直接修改,而指针的修改则是未定义的。

posted @ 2012-03-01 10:49  顽童书生  阅读(153)  评论(0编辑  收藏  举报