C语言规定 :数组名代表数组的首地址,也就是第一个元素a[0]的地址。
p=a;相当于p=&a[0];
则
p+1相当于&a[1]
*(p+1)相当于a[1]
p+i相当于&a[i]
*(p+i)相当于a[i]
数组变量是特殊的指针。
数组变量本身表达地址,所以int a[10];int *p=a;//无需用&取地址
但是数组单元表达的是变量,需要用&取地址。
malloc函数
#include<stdlib.h>头文件
向malloc申请空间是以字节为单位的。
(int*)malloc(num*sizeof(int));申请的动态内存。
free(a);把申请的空间还给系统。只能还申请来的首地址。
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,num,*a;
printf("输入数据:");
scanf("%d",&num);
//int a[num];
a=(int*)malloc(num*sizeof(int));
for(i=0;i<num;i++)
{
scanf("%d",&a[i]);
}
for(i=num-1;i>=0;i--)
{
printf("%d",a[i]);
}
free(a);
printf("\n");
}