A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微尘•逐梦 中级黑马   /  2014-4-20 11:30  /  782 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 微尘•逐梦 于 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
复制代码

2 个回复

正序浏览
本帖最后由 星河鹭起 于 2014-4-20 11:53 编辑

指针变量使用&运算后得到的是指针变量的地址,而数组名相当于一个指针、
所以C语言中的规定是取数组地址的结果是:仍然是其本身。
既 &array 的值和 array一样。
注意:值是一样,类型是不一样的。
所以&str相当于指针的指针,指向数组名,而数组名的首地址就是o的地址,因此&str指向的首地址也是o,最后输出的结构就都是one了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马