#include<stdio.h>
void print_array_test(char ca[])
{
printf("ca : %s\n",ca);
printf("&ca : %s\n",&ca);
printf("&(ca[0]) : %s\n",&(ca[0]));
printf("&(ca[1]) : %s\n",&(ca[1]));
printf("*(ca+0) : %c\n",*(ca+0));
printf("*(ca+1) : %c\n",*(ca+1));
printf("ca+1 : %s\n",ca+1);
} void print_ptr_test(char *pa)
{
printf("pa : %s\n",pa);
printf("&pa : %s\n",&pa);
printf("&(pa[0]) : %s\n",&(pa[0]));
printf("&(pa[1]) : %s\n",&(pa[1]));
printf("pa+1 : %s\n",pa+1);
printf("pa[1] : %c\n",pa[1]);
printf("*(pa+1) : %c\n",*(pa+1));
printf("++pa : %s\n",++pa);
}
int main()
{
char abc[]="hello,world!";
print_array_test(abc);
print_ptr_test(abc); return 0;
}

数组abc[20]="hello,world!"

中&abc[i]与abc+i含义同样——取的是abc[i]的地址

指针pa =abc;

pa[i]与*(pa+i)是等价的——取的是abc[i]的值

鉴于以上程序,执行之:

[root@localhost code]# ./arrayandptr

ca : hello,world!

&ca : ▒▒▒,▒▒;

&(ca[0]) : hello,world!

&(ca[1]) : ello,world!

*(ca+0) : h

*(ca+1) : e

ca+1 : ello,world!

pa : hello,world!

&pa : ▒▒▒,▒▒;

&(pa[0]) : hello,world!

&(pa[1]) : ello,world!

pa+1 : ello,world!

pa[1] : e

*(pa+1) : e

++pa : ello,world!

[root@localhost code]#

C专家编程之为什么C语言把数组形參当做指针:数组/指针实參的更多相关文章

  1. 【c专家编程】分析c语言的声明

    联合: 在结构中,每个成员依次存储,而在联合中,所有成员都从偏移地址零开始存储,联合一般被用来节省空间,用法和struct相同. union bits32_tag { int whole; // 一个 ...

  2. C语言学习书籍推荐《C专家编程Expert C Programming Deep C Secrets》下载

    Peter Van Der Linden (作者) <C和C++经典著作 C专家编程Expert C Programming Deep C Secrets>展示了C程序员所使用的编码技巧, ...

  3. 《C专家编程》第三章——分析C语言的声明

    前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其 ...

  4. C专家编程阅读笔记

    周末闲来无事,(哗),好久之前买的C专家编程一直没看,翻起来看了一下 尽量不使用unsigned 尽量不要在代码中使用unsigned,尤其是一些看起来是无符号类型的数字,比如年龄等,因为难免要使用u ...

  5. c专家编程摘录

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  6. <<c专家编程>>笔记

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  7. 《C专家编程》数组和指针并不同--多维数组

    <C专家编程>数组和指针并不同 标签(空格分隔): 程序设计论著笔记 1. 背景理解 1.1 区分定义与声明 p83 声明相当于普通声明:它所说明的并不是自身,而是描写叙述其它地方创建的对 ...

  8. C#高级编程9-第12章 动态语言扩展

    C#高级编程9-第12章 动态语言扩展 dynamic t = new ExpandoObject(); t.Abc = "abc"; t.Value = ; Console.Wr ...

  9. C专家编程

    [C专家编程] 1.如果写了这样一条语句: if(3=i).那么编程器会发出“attempted assignment to literal(试图向常数赋值)”的错误信息. 所以将常量放置在==前央, ...

随机推荐

  1. MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

    一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...

  2. 0x54 树形DP

    树形DP我只知道千万别写森林转二叉树慢的要死 没有上司的舞会 水!裸! #include<cstdio> #include<cstring> #include<cstdl ...

  3. [NOIP 2007] 树网的核

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1999 [算法] 树的直径 + 单调队列 [代码] #include<bits/ ...

  4. 【POJ 2976】 Dropping Tests

    [题目链接] http://poj.org/problem?id=2976 [算法] 0/1分数规划 [代码] #include <algorithm> #include <bits ...

  5. 【SDOI 2010】 计算器

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2242 [算法] 第一问用快速幂解决 第二问用exgcd解决 第三问用BSGS算法解决 ...

  6. thinkphp 内存查询表 防止多次查库

    //从内存查询 表 以防止多次查库 private static function selectTable($tableName,array $where,$getFirst=false){ $res ...

  7. Gerapy 使用详解

    https://blog.csdn.net/fengltxx/article/details/79894839

  8. 带中横线的日期格式在iOS手机系统上 转换时间戳NaN问题

    类似于 '2019-04-01 14:13:00' 这样的日期格式转换时间戳在iOS手机上是无法转换的,需要先处理日期格式成 '2019/04/01 14:13:00' var str = '2019 ...

  9. java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)

    注意:想在catch的参数里使用自定义的异常,则必须先将这个异常抛出才行.(throws是具有抛出异常的能力,并未抛出,throw new MyException是抛出异常,catch是捕获异常,只有 ...

  10. Visual Studio蛋疼问题解决(2)

    Astyle配置 1.下载并安装Astyle(AstyleExtension.vsix),重新启动VS: 2.工具->选项,从左侧列表找到AStyleFormatter,在右边编辑参数,参考设置 ...