C语言指针
前导程序
#include<stdio.h>
void change(int *);
int main()
{
int a=90;
change(&a);
printf("a=%d\n",a);
return 0;
}
void change(int *n)
{
*n=10;
}
一、基本知识点
Int a=10;
Int *p;//定义一个int类型的指针
P=&a;//指针变量p指向了变量a
*p=20;//使用指针不通过变量直接修改变量a的值为20
*p表示访问指针变量p指向的存储空间
指针一个作用:能够根据一个地址值,访问(取值 | 赋值)对应的存储空间
指针变量p前面的int,表示指针的类型
①. Int *p;
②. *p=10;
两个*的区别:前一个起标识作用,表明定义的p是一个指针,后者的*表示通过访问p指向的地址空间
二、指针使用注意
①. Int *p;
double d=10.0;
p=&d;//不建议此种做法
②. Int *p;
p=200;//指针变量只能存储地址
③. Int *p;
printf(“%d\n”,*p);//指针变量未经初始化,不要拿来间接访问其他的存储空间
④. Int *p=&a;但是不能写成 int *p;*p=&a;这种写法没有任何的意义,可以认为*是和类型符一起使用的。
⑤. *是指针运算符,访问指针指向的空间
三、指向指针的指针
Int a=10;
Int *p=&a;//指向int型的指针
Int **p1=&p;//指向指针的指针
Int ***p2=&p1;//三级指针
*p2相当于访问p1;
**p2相当于访问p;
***p2相当于访问a;
*p1相当于访问p;
一颗星一条线。
四、指针练习
编写一个函数,计算a和b的和与差(一个函数返回两个值)
提示:指针的作用之一:实现让函数拥有多个返回值
1 #include<stdio.h>
2
3
4
5 int SumAndMinus(int n1,int n2,int *n3)
6
7 {
8
9 *n3=n1-n2;
10
11 return n1+n2;
12
13 }
14
15
16
17 int main()
18
19 {
20
21 int a=10;
22
23 int b=11;
24
25 int sum;
26
27 int minus;
28
29 sum=SumAndMinus(a,b,&minus);
30
31 printf("和=%d,差=%d\n",sum,minus);
32
33 }