#include<stdio.h>
/*
指针与数组
*/
int main() {
int a[3] = {10,20,30};
//1、数组和指针的关系
//说明:数组名的地址和第一个元素的地址时相同的
//数组名是指向第一个元素地址的
printf("a的指针:%p\n",a);
printf("a[0]的指针:%p\n",&a[0]);
//取得a[0]的值
int value1 = a[0];
//通过嗄[0]的地址取得a[0]的值
int value2 = *a;
printf("value1:%d value2:%d\n",value1,value2);
//错误,数组是数组的首地址,是指针常量,不能修改
// a = &a[1];
// a ++;
//定义一个整型指针指向a[0]
//ffc1 ffc5
int *p = a;
printf("*p:%d\n",*p);
//不是单纯的地址+1
p ++;
printf("++后*p:%d\n",*p);
//2、数组的遍历
int b[] = {1,2,3,4,5,6,7};
//常规遍历
//数组元素的个数
int len = sizeof(b)/sizeof(int);
for (int i = 0; i < len; ++i)
{
//取出元素
int value = b[i];
printf("b[%d] = %d\n",i,value);
}
//用指针遍历数组
//定义一个指针,指向首地址,第一个元素
int *pointer = b;
for (int i = 0; i < len; ++i)
{
//取出指针所指向的值
int value = *pointer;
printf("b[%d] = %d\n",i,value);
//指针指向下一个元素
pointer ++;
// a ++; 错误
}
printf("指针最后的指向%d\n", *pointer);
return 0;
}