C语言之指针

 1.指针的概念

    指针类型数据(简称指针)是存储某种类型数据所使用内存空间的起始地址。

2.指针变量的定义和初始化

类型   *指针变量名1,*指针变量名2,……;

int a,*pi;/*定义int型变量a和int型指针变量pi*/
char ch,*pc;/*定义char型变量ch和char型指针变量pc*、

指针变量可以和其他变量一起出现在同一个说明语句中。

eg:指针变量p中存储了变量a指针(&a),称p指向了a。

注意:指针变量只有有了明确的指向,才能使用指针变量访问其指向的数据

3.与指针有关的运算

(1)&:取地址运算符,运算对象是变量,得到变量的指针

(2)*:指针运算符,运算对象是指针,访问指针变量所指向的内存空间

eg:将123赋值给变量a,有3种方法:

1.a=123   2.*p=123    3.*&a=123

4.指针变量的赋值运算

     将变量j的指针赋值给指针变量p,可用:

p=&j;

将数组arr的起始地址赋给指针变量p,可用:

p=arr;   /*或p=&arr[0];数组名就是元素arr[0]的地址*/

也可以将一个指针变量的值赋值给另一个同类型的指针变量,此时,两个指针变量指向同一块存储空间(或同一个变量):

p=pi;

注意:(1)指针的类型应与指针变量的类型一致

           (2)可以将空指针(NULL或0)赋值给指针变量,不能用一个常量(除0以外)或一个非地址表达式来给指针变量赋值。

p=NULL;  /*正确*/
p=67;    /*错误*/
p=i+5;   /*错误*/

指针可以自增或自减,以及加减运算。(指向同一个数组的两个指针可以进行关系运算)。

5.数组中的指针(主要是一维数组)

一维数组名是一个指针常量,代表数组在内存中的起始地址,其实就是数组0元素的指针。

对数组元素的访问有两种方法:1。下标法(如a[0])  2.指针法

下面对这两种方法举例:

一维整型数组a,有10个元素,输入10个整数存储在数组a中

方法一:通过取地址运算符求得元素的指针。

#include <stdio,h>
int mian()
{
   int a[10],i;
   for(i=0;i<10;i++)
      scanf("%d",&a[i]); /*&a[i]是数组元素a[i]的指针*/
}

方法二:通过数组0元素的指针a加i求得元素的指针。

#include <stdio.h>
int main()
{
	int a[10],i;
	for(i=0;i<10;i++)
	   scanf("%d",a+i);  /*a+i是数组元素a[i]的指针*/ 
}

方法三:使用指向数组元素的指针变量。

#include <stdio.h>
int main()
{
	int a[10],*p;
	p=a;
	for(;p<(a+10);p++)
	   scanf("%d",p);  
}

或者:

#include <stdio.h>
int main()
{
	int a[10],*p,i;
	p=&a[0];
	for(i=0;i<10;i++)
	   scanf("%d",p+i); /*循环过程中p的值不变,p+i是数组元素a[i]的指针*/ 
}

说了这么多,其实指针就是存储数据的地址,就好比自己家的地址。

第一次写,也是自己的一些总结,希望对大家有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值