1.什么是指针?
{
指针就是用来存放地址的变量
}
2.如何使用指针进行运算?
{
int a=10;
int *p=&a
printf("%d",*p);
*p=100;
printf("%d",a);
}
3.什么时候使用指针?
{
当函数进行值传递时通过指针传递就可以实现,
形参和实参的同步转化,从而更便捷的实现函
数功能
另外,在数组是不支持数组地址++运算所以
通过将首地址赋值给指针,达到指针数组的效
果.(数组地址不可以更改)
}
4.指针有几种类型?
{
常见的有:
$各种数据类型对应的指针变量以及指针数组
如:
char *q;
int *p;
short *a;
long int *b;
bool int *c;
int rum[8]; int rum[];
int *tree; int *tree;
定义指针数组保持相同的数组量,否则
无法使用
多级指针:
用来存放指针地址的指针
int **p=&q;
二维数组:指针也可看做二级指针
但是不等于二级数组就是二级指针
所以一级指针变量和二级指针之间不可
以直接赋值
数组指针:用来存放数组地址的指针
int fore[10];
int (*poi)[10]=&fore;
在此处poi+1就等于fore的地址加40;
函数指针
}
5.使用指针有什么要求
{
指针的类型必须和所取地址的变量类型保持
严格一致
}
6.巧用指针案例
{
#include<stdio.h>//总结:数组定义时是指针,运算时是指针解引用
#define LIM 4
int sumary(int a[],int b[],int c[]);
int main()
{
int array1[LIM]={2,4,6,8};
int array2[LIM]={1,0,3,6};
int array3[LIM];
sumary(array1,array2,array3);//将首地址传入形参数组
int i;
for(i=0;i<LIM;i++)
{
printf("%d\n",array3[i]);
}
return 0;
}
int sumary(int a[],int b[],int c[])//
{
for(int i=0;i<LIM;i++)
{
c[i]=b[i]+a[i];
}
//return 0;
//a[]=*(a);
//*(a+i)=a[i];
}
}
7.指针有哪些相同的项,哪些不同但相似的项
{
*相同项
数组首地址=数组首元素取地址
*不同项
数组取地址 != 数组首地址
数组首地址加一 != 数组地址加一
}