指针重要性
指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;指针极大地丰富了C语言的功能。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时,指针也是C语言中最为困难的一部分。
指针的基本概念:
内存单元的编号也叫地址。根据内存单元的编号或地址可以找到所需的内存单元,通常把这个地址称为指针。
注意:
但是这里的内存单元的指针和内存单元的内容是两个不同的概念。
举个例子来说就是银行卡上的账号就是内存地址,是存单的指针,卡里面的存款数就是存单的内容。
1:指针是一个地址,是一个常量,指向的是个类型:
2:指针指向的是地址,地址指向的是内容:
指针的定义和赋值
其一般形式:
类型说明符 *变量名;
例如: int *p; //一个指向整形变量的指针 变量名是p
float *p1;//一个指向浮点型变量的指针 变量名是p1
指针的初始化方法有两种: 定义的同时进行初始化和先定义后初始化
1) 先定义后赋值:
int a;
int *p;
p = &a;
2) 定义的同时赋值:
int a = 5;
int *p = &a;
3)把指针初始化为NULL
int *p=NULL;
int *q=0;
注意:int *p; p = 10; //p指向的地址是10
int *p; *p = 100; //p指向的地址里面的数据是100
int *p; *p = &a; //p指向的地址里面的数据是a的地址
%p输出指针里面存储的地址值。
4)指针没有初始化里面是一个垃圾值,这时我们称这是一个野指针,
如果操作一个野指针
1) 可能会导致程序崩溃
2)访问不该访问的数据
所以指针必须先初始化才可以访问其指向的存储区域
指针的唯一作用:存储地址,访问对应的存储空间:取值或复值。
使用 “ * ” 来获取指针对应存储区域的内容
两个相关的运算符:
& :取地址运算符
* :指针运算符(间接访问运算符)
一般形式:
&变量名
*指针变量名 //获取指针变量指向的存储空间的内容。
<span style="font-size:14px;">#include "stdio.h"
void caculator(int x,int y,int *add,int *jian,int *cheng,float *chu){
//在函数的内部访问了主调函数中的变量值
*add = x+y;
*jian = x-y;
*cheng = x*y;
*chu = x/(float)y;
}
int main(int argc, const char * argv[]) {
int add=0;
int jian=0;
int cheng=0;
float chu=0.0f;
caculator(12, 4, &add, &jian, &cheng, &chu);
printf("add = %d\n",add);
printf("jian = %d\n",jian);
printf("cheng = %d\n",cheng);
printf("chu = %.2f\n",chu);
return 0;
}</span>