C专家编程之为什么C语言把数组形參当做指针:数组/指针实參
2017-06-06 16:53
120 查看
#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语言把数组形参当做指针:数组/指针实参
- C专家编程 十 规则2: C语言把数组下标作为指针的偏移量(二)
- C语言指针与数组(C专家编程)
- C专家编程——第四章:数组与指针并不相同
- C 专家编程笔记(三) 数组和指针
- C专家编程-数组和指针并不相同
- 指针和数组(C专家编程笔记)
- c语言:为什么不进行下标检查,总结下指针和数组
- C语言编程(练习4:数组与指针)
- C语言编程(练习1:数组和指针)
- C专家编程 九 什么时候数组与指针相同(一)
- 玩转数组 指针参数之c专家编程第九章
- C专家编程--数组和指针如何被编译器修改的
- C专家编程--数组与指针(一)数组 指针 访问方式 区别
- C语言编程(练习5:数组与指针)
- C语言把数组形参当做指针
- C专家编程学习之第四章 数组和指针
- C专家编程--指针和数组(三) 值传递 指针传递 引用传递
- C专家编程--指针和数组(四) 指针对数组的访问
- C语言编程(练习9:数组与指针)