黑马程序员-指针
指针
通过内存地址可以找到所需的内存单元,因此,就可以说该内存地址指向了该变量,这个内存地址也被形象地称为“指针”。简单来说就是变量的地址就是该变量的指针;而用于保存内存地址(指针)的变量就是指针变量。
访问或者获取内存空间中的数据,可以通过变量名就可以.
在程序中存储一个值实际上是在内存中开了一个空间
存储这个值的空间我们叫内存存储单元
存储单元中的值叫数据
每个存储单元都有一个编号,这个编号我们叫地址
内存单元--空间
内存单元的编号--地址
内存单元中的值--数据
指针:指针就是地址,地址就是指针
指针的作用:
1.可以通过变量的方式去访问空间中的数据
2.也可以通过地址的方式访问某个空间中的数据
3.可以通过指针的方式访问某个空间中的数据
指针变量
指针变量:首先是一个变量,这个变量里存的是地址(普通变量的地址)
指针变量的声明:
不同的值要用不同的数据类型来声明变量存储,占字节不同
定义指针变量的语法格式:
数据类型 *变量名;
存什么类型的指针就用什么类型的指针变量来接收
指针变量的声明及初始化:
1.第一种方式指针变量声明的同时直接初始化
指针:pointer
int num=10; int *p= # printf("%d===%p\n",num,&num); printf("%p===\n",p);
地址可以保存起来,存到指针变量里面去了
2.第二种方式指针变量先声明,后初始化
int num=10; int *p;//先声明一个指针变量 p=#//后初始化
如果一个指针声明了,没有初始化,那么里面存的是垃圾值(地址不一定是谁的)
int *p=NULL;//作用就是啥也没存,----野指针, printf("%p\n",p); int *p=1000;
指针变量可以获取值,也可以设定值
int num=10; int *p=# *p=100; printf("%d===%p\n",*p,p); printf("%d===%p\n",num,&num);
可以通过指针变量访问某个变量中的值.
指针的使用
指针变量可以作为函数的参数使用
#include <stdio.h> void test(int *number){ *number=1000; } int main(int argc, const char * argv[]) { int num=10; test(&num);//传的是地址 printf("%d====%p\n",num,&num); return 0; }
二级指针:
一级指针:这个指针变量中存的是一个普通变量的地址,一级指针
二级指针:这个指针变量中存的是一个一级指针的地址,二级指针
二级指针的声明:
指针数据类型 **指针变量名;
二级指针的初始化
声明的同时直接初始化
int num=10;
int *p1=#
int **p2=&p1;//二级指针
文件指针
文件指针:首先是一个指针,这个指针指向文件的地址
如何定义一个文件指针
操作文件的步骤
1.引入头文件
#include <stdio.h>
2.定义文件指针
FILE *fp;
3.打开文件
fp=fopen("路径","操作的方式"); fp=fopen("book.txt","r"); //r---read的缩写
4.读写操作
读取内容
5.关闭文件
fclose(fp);
#include <stdio.h> int main(int argc, const char * argv[]) { //定义文件指针的同时直接打开这个文件 FILE *fp=fopen("book.txt", "r");//以读取的方式打开这个文件 //判断这个文件是否能够成功的打开 if (fp!=NULL) { //打开成功 //读取或者是写入的操作---此处只能做读取操作,因为是以r打开 }else{ printf("文件打开失败\n"); // getchar(); //等待用户输入一个字符 //exit(1); //退出 } //关闭文件 fclose(fp); return 0; }
浙公网安备 33010602011771号