code:正常访问情况
#include <stdio.h>
int main(void)
{
char *c;
char arry[]="Hello,world!!";
int len = sizeof(arry)/sizeof(arry[0]);
c = arry;
//可以用指针地址加上第几个来访问
for(int i=0;i<len;i++){
printf("%c ", *(c+i));
}
putchar('\n');
//可以跟数组一样当做下标进行访问
for (int i=0;i<len;i++){
printf("%c ", c[i]);
}
putchar('\n');
//通过指针自身++来改变指针本来的地址内存空间
for(int i=0;i<len;i++){
printf("%c ", *c++);
}
putchar('\n');
//对数组进行访问
for(int i=0;i<len;i++){
printf("%c ", arry[i]);
}
putchar('\n');
/*这一句下面答应的是未知量,
此时的指针所处的地址空间是数组的最后一个字符的位置,
在进行访问的只能访问到未知的量*/
for (int i=0;i<len;i++){
printf("%c ", c[i]);
}
putchar('\n');
//通过--是指针的地址空间处在数组的起始位
for(int i=0;i<len;i++){
printf("%c ", *(--c));
}
return 0;
}
运行结果:
C:\Users\Administrator\Desktop\C_Study\新版本c语言\程序\unit6_pointer>a.exe
H e l l o , w o r l d ! !
H e l l o , w o r l d ! !
H e l l o , w o r l d ! !
H e l l o , w o r l d ! !
//这里是空格
! ! d l r o w , o l l e H
code:错误访问
指针的地址没办法给数组地址使用
int main(void)
{
char *c="Hello,world!!";
char arry[16]={0};
int len = sizeof(arry)/sizeof(arry[0]);
arry = c;//error: assignment to expression with array type
//只能数组的地址给指针操作,不能指针的地址给数组操作()
for(int i=0;i<len;i++){
printf("%c ", arry[i]);
}
putchar('\n');
}