# include <stdio.h>
intmain(){chartitle[]={"C language pointer!"};//等价于char title[]="C language pointer!";
char*ptitle;/*
这段程序很清楚地表达了数组指针变量指向数组的概念。
数组在内存中是一段连续的内存区域,数组名是数组第一个元素的地址,也就是这段连续内存区域的首地址。
当数组指针变量指向数组时,实际上是指向第一个数组元素,也就是这段连续内存区域的首地址。
*/ptitle=title;//等价于ptitle=&title[0];
printf("title: %s\n",title);//title: C language pointer!
printf("ptitle->title: %s\n",ptitle);//ptitle->title: C language pointer!
printf("&title=%p\n",&title);//&title=0x7fff5fbff790
printf("ptitle=%p\n",ptitle);//ptitle=0x7fff5fbff790
printf("&title[0]=%p\n",&title[0]);//&title[0]=0x7fff5fbff790
//遍历
while(*ptitle){printf("%c",*ptitle);ptitle++;}printf("\n");inta[]={1,2,3,4,5};int*p=a;while(*p){printf("%d",*p);p++;}printf("\n");//另一种遍历
p=a;for(inti=0;i<sizeof(a)/sizeof(int);i++){printf("%d",p[i]);//等价于*(p+i)
}printf("\n");return0;}
# include <stdio.h>
intmain(){char*str="I love China!";//str是一个指向char的指针变量,指向该字符串的首字符'I'的地址
printf("%s\n",str);//I love China!
printf("%p\n",str);//0x100000f9e
/*
运行结果:
I 0x100000f92
0x100000f93
l 0x100000f94
o 0x100000f95
v 0x100000f96
e 0x100000f97
0x100000f98
C 0x100000f99
h 0x100000f9a
i 0x100000f9b
n 0x100000f9c
a 0x100000f9d
! 0x100000f9e
*/char*p=str;while(*p){printf("%c %p\n",*p,p);p++;}printf("\n");return0;}