C语言基础——指针

指针

什么是指针 作用

int test(int a,int salaray){
a + 1;
s + 1;


raturn a + 1;

} 

int main{
int money = 10;
int  salaray
money = test(money);
}

什么是指针

指针是一个变量

1.这个变量只能存地址
2.任何指针变量占据的内存空间都是八个字节

int a = 10;  普通变量
int *pa ;
函数指针
int (*test)(int a);9

1.* 在定义的时候表示一个指针变量
2.在表示的时候表示一个具体的值
3.指针变量赋值的时候只能赋地址

int temp = 10;
int *p;
*p = 20;
%8)4)OZ0JQ}L98KMS)3GW53.png

二级指针

int **p = &p

![$L(9BBB}L`M]F5C{1SV)2)V.png](https://upload-images.jianshu.io/upload_images/20123017-44d3ac1d72c03f0d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

指针的类型

1.普通指针

  int*p   char *p    int (*func)(int)

2.常量指针

int a = 20;
int b = 30;

int const*pa = &a;
*pa = 50
运行错误
不能改变指针指向变量的值

pa = &b;
可以运行 可以改变指针的指向

3.指针常量

int *const pb = &a;
*pb = 50;
可以运行  可以改变指针指向的变量的值
pb = &b;
不能运行 不能改变指针的指向   数组就是一个指针常量  不能对数组名进行运算

4.指向常量的常量指针

int const*const pc = &a;

什么都不能改变
不能改变指针的指向
不能改变指针指向变量的值
指针变量只能存数组

指针变量只能指向同种数据类型的地址

指针的值

就是指向的内存空间的首地址

指针和数组

1.数组是一片连续的内存空间
2.指针只是一个变量 只能存地址
3.数组也可以用指针的方式访问

数组的第一种访问方式

num【0】 = 20   num【1】 = 30

第二种访问方式

 *num = 20     *num + 1 = 30

指针里面不确定尽量加括弧 用来分清符号的结合方式

指针和函数

作用

  • 通过指针间接访问某个地址

定义一个函数 什么情况下参数是一个指针
1.这个函数会不会改变传递过来的数据本身
2.需要改变外部的值 就将这个变量定义为指针变量
3.数组名没有分配内存空间 指针变量具有内存空间
4.数组是一片连续的内存空间 可以存多个值
5.指针只能存一个值 只能是地址
6.函数接收数组时必须知道数组元素的个数
7.函数里面是通过指针变量来接收数组的地址
8.指针变量无法确定指向内容的大小

访问数组有两种方式

1.数组名num【3】
2.\*(num+3)

注:声明变量 没有分配内存空间
定义变量 立刻分配内存空间 并且赋值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容