C语言数组与指针的关系

C语言指针与数组的关系

1.什么是数组

创建一个数组

int a[10]; 

此操作表示创建一个可以存10个int型变量的数组a,而变量a实际上就是一个指针,它指向的是数组a首元素的首地址(也就是指向a[0]的首地址),我们通过a[1],a[2]…去寻找相应元素,实际上就是通过加上它距离首元素的偏移量,去找到相应位置的元素,因此a[3]=a+3=[3]a;但是我们默认使用a[3]来表示。

函数参数中的数组

int fun(int a[],int n)
//或者
int fun(int a[10])

数组名作形参时,此时对编译器来说该数组名就是一个指针,形参给出数组长度,则指针只需要移动给出的长度执行程序即可,而使用数组作为形参的写法,在实参到形参的传递过程中,实参需要拷贝到形参中,这样既占用了内存,又多花费了时间,不利于写出高效的代码。在一般的操作时,都才用第一种写法,传递一个数组和它所对应的长度。(字符串存在结束符则不用传递长度)。

2.什么是指针

指针是指向地址的一类变量,它也是一个变量,它所存的值,就是该类型变量的首地址,因此在同一台电脑上,所有指针变量的大小都应该是一样的。

1.指针类型

指针类型是一种新的类型,常见的类型有整形(int),用来存放整数;字符型(char),用来存放字符或字符串;浮点型(float),用来存放浮点型数据,比如小数。而指针类型是一种与他们独立的新类型,它存放的是各种数据存放的地址。它的格式为:类型 *,(*为间接访问运算符/解引用指针)

2.常见的指针类型

int *a;//定义一个指向int变量首地址的指针
double *b;//定义一个指向double变量首地址的指针
char *c;//定义一个指向char型变量首地址的指针

3.指针与数组的联系

*之前提到数组例如a[10]就表示指针a指向一个可以存10个int型变量的数组的首元素的首地址,而int p;则表示定义一个可以指向int型变量首地址的指针p,而这个指针当然可以指向一个数组的首元素的首地址,此时p也就指向了该数组,所以此时的a[1]也就等价于p[1]。此外我们也可以用malloc的方法,动态的为指针p指向的单元开辟空间,达到数组的目的。

int a[10];
int *p;
p=a;//此时p也指向的数组a的首元素的首地址
for(int i=0;i<10;i++)
	printf("%d",p[i]);//利用p同样可以访问数组的a的各个元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值