黑马程序员技术交流社区

标题: 数组和指针 [打印本页]

作者: 微尘•逐梦    时间: 2014-4-20 11:30
标题: 数组和指针
本帖最后由 微尘•逐梦 于 2014-4-21 10:43 编辑

我写了以下代码打印字符串数组,打印结果都是one, printf("%s\n",&str)这行代码我无法理解,希望有人能帮忙解释一下。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.    char str[] = "one";
  5.    
  6.     printf("%s\n",str);
  7.     printf("%s\n",&str);

  8.     return 0;
  9. }
复制代码

打印结果
  1. one
  2. one
复制代码

作者: 星河鹭起    时间: 2014-4-20 11:50
本帖最后由 星河鹭起 于 2014-4-20 11:53 编辑

指针变量使用&运算后得到的是指针变量的地址,而数组名相当于一个指针、
所以C语言中的规定是取数组地址的结果是:仍然是其本身。
既 &array 的值和 array一样。
注意:值是一样,类型是不一样的。
所以&str相当于指针的指针,指向数组名,而数组名的首地址就是o的地址,因此&str指向的首地址也是o,最后输出的结构就都是one了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2