基础概念
什么是指针?
简单的来说,指针就是地址。我们口头上说的指针其实指的是指针变量。指针变量就是一个存放地址的变量。我们把一个变量的地址赋值给一个指针变量,也就是说这个指针变量指向了该变量,指针之名由此而来;
比如下面这段程序(先简单看一下)
#include<stdio.h>
int main()
{
int* p;//定义了一个指向int类型的指针变量
int s=9;//定义int类型的变量
p=&s;//将这个变量的地址赋值给指针变量
printf("%d",*p);//利用指针去输出这个int变量
return 0;
}
上面程序所用的一些符号
‘&’ 取地址符
‘*’ 1.取指针所指向的变量的值 2.用于定义指针变量
指针变量的初始化
//第一种初始化
int s=5;
int* p=&s;
printf("%d",*p);
//第二种初始化
int s=5;
int *p;
p=&s;
printf("%d",*p);
&与&的区别
#include<stdio.h>
int main()
{
int s=5;
int* p=&s;
printf("%d\n",&*p);//先去取p所指向的变量的内容,在取地址
printf("%d\n",*&s);//输出的是变量s中存储的内容
return 0;
}
指针自加自减运算:当一个int 的指针+1,跳过4个字节;当一个char 的指针+1,跳过1个字节。
指针与前面所学内容结合
一维数组与指针
#include<stdio.h>
int main()
{
int s[10];
for(int i=0;i<10;i++) s[i]=i;
int* p=s;
for(int i=0;i<10;i++)
{
printf("%d\n",*(p+i));
}
return 0;
}
//一维数组的数组名就是一个地址,存储者首元素的地址,数组在内存中是连续存储的一段内存空间
二维数组与指针
字符串与指针
#include<stdio.h>
#include<string.h>
int main()
{
char p[]="fangyiqi";
printf("%s",p);
return 0;
}
利用指针变量传参
#include<stdio.h>
int sum(int* p,int* q)
{
return (*p+*q);
}
int main()
{
int a,b;
int* p=&a;
int* q=&b;
scanf("%d%d",p,q);
int res=sum(p,q);
printf("%d",res);
return 0;
}