#include<stdio.h>
int main()
{
int a[5] = { 5,1,2,3,4 }; //a[3]=*(a+3)
printf("%d\n", *a); //a代表的是指向数组第一个元素的地址
printf("%d\n", *a + 1); //相当于数组第一个元素+1
printf("%d\n", *a + 3); //相当于数组第一个元素+3
printf("%d\n", *(a + 3)); //相当于数组第四个元素
return 0;
}
#include<stdio.h>
void Show_Array(int* p, int len)
{
p[2] = -1; //p[2] == *(p+2)==*(a+2)
}
int main()
{
int a[5] = { 1,2,3,4,5 };
Show_Array(a,5);
printf("%d\n", a[2]); //此时a[2]的数值被修改
return 0;
}
数组就是指针,指针就是数组(可能不严谨,但是这么记容易理解)
例:数组和指针可以互相转换
#include <stdio.h>
#include <stdlib.h>
#define LEN 4
int main()
{
printf("\n");
int* a = (int*)malloc(sizeof(int) * LEN);
for (int i = 0; i < LEN; i++)
{
scanf_s("%d", &*(a+i)); //这里的*(a+i)可替换为a[i]
}
for (int i = 0; i < LEN; i++)
{
printf("%d", a[i]); //这里的a[i]可替换为*(a+i)
}
free(a);
return 0;
}