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]的指针*/
}
说了这么多,其实指针就是存储数据的地址,就好比自己家的地址。
第一次写,也是自己的一些总结,希望对大家有帮助!