指针的定义:
严格上来讲,指针有两层含义,一是指一种保存地址的变量。二是指一种数据类型,是一种存储地址的特殊的数据类型,用来表示一个变量或者常量在内存中的地址。如果在内存中有一块空间,存放了变量a的地址,那么这块存放过了a的地址的 内存空间所对应的内容就是a的指针。
指针的作用:
用于储存某一个地址,从而可以通过地址直接对该地址内存空间中的数据进行操作。
指针的用法:
定义:类型 *指针名;如int *p;表示定义一个能存int类型地址的指针变量,名字叫p
赋值:指针变量名=指针(地址) 注意:指针获取方法(&变量名)
指针的特点:
1:指针本真也有地址:指针定义之后,自身地址不变,但里面存的地址可以变化。
2:&p表示指针自身地址,而p表示指针存的地址,*p表示指针所存地址的内存空间。
3:指针不初始化赋值不要使用,未赋值前地址是随机的,未赋值不可以用 *p;
4:*修饰什么,就代表是什么的指针,判断原则:先确定变量的类型(根据符号优先级)
5:指针是什么类型的,就应该存什么类型的地址,否则*p取对应内存空间的指会出错。
- #include <stdio.h>
- void test1(int a);
- void test2(int *a);
- int main()
- {
- int a=5;
- printf("a=%d\n",a);
- test1(a);
- printf("after a=%d\n",a);
- int *p=&a;
- test2(p);
- printf("a=%d\n",a);
- return 0;
- }
复制代码
//传给函数的是一个值,函数内部对变量的修改不影响外部变量,外部变量的值不变
- void test1(int a)
- {
- a=a+10;
- }
复制代码
/*
传给函数的是外部变量的地址,那么函数内部就会根据地址找到外部的变量,对它进行操作
函数内部对变量的修改就是对外部变量的修改
*/
- void test2(int *a)
- {
- *a=*a+10;
- }
复制代码 |
|