A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 非良人 中级黑马   /  2016-3-13 20:39  /  720 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//-------------------------------指针
能存地址的数据类型  ---->   地址

使用指针好处

a.为函数提供修改调用变量的灵活手段;

b.让函数有多个返回值

c.可以改善某些子程序的效率


变量的存取方式 存取方式分为两种: 直接存取 和 间接存取


# 直接存取:变量的赋值和取值(通过变量名进行存取值)

int num = 100;

num = 200;


# 间接存取:通过指针(地址)间接操作完成。

int num = 100;

int *p = #   //p指向了 num 的地址

*p = 99;






//------------------------------指针变量

1、指针变量  在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。

因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。

注意: 严格意义上说,指针是一个地址,是一个常量指针变量是存放一个地址,是一个变量。

定义一个指针变量

指针变量   ---->   变量    ---->   存放地址的变量

int a = 10;    //定义一个整型变量  变量名为  a   a的值为10

int *p = &a;   //   定义了一个指针变量,里面存放的是a的地址

/*

当在定义的时候  int *p = &a;   * 类型说明符   说明我定义的这个变量是一个指针变量


在使用的时候  *p = 10;     *   它是一个操作符  获取指针变量p指向的地址所对应的内容


*/

//
int a = 998;
# 指针变量    int *p = &a;

&p : p 变量名     &p   指针变量的地址

p  : p指针变量 里面存放的就是地址   a的地址

*p : p这个指针变量指向地址(a的地址)所对应的内容  998

a  :  整型变量


//-----------------------------初始化与引用

//定义的同时进行初始化

int a = 10;   //定义了一个int类型的变量

int *p = &a;   //定义了一个int *类型的指针变量   指向的就是a的地址

*p  --->   指向的地址所对应的内容

// 先定义后初始化

int b =  5;

int *p1;  // 仅仅只是定义

p1 = &b; //  对指针变量进行初始化

//定义了一个指针变量
int *p = &a;

int *p1 = p;

*p = 10;

printf("%d",*p);   p指向的地址所对应的内容

注意点
1、多个指针变量可以指向同一个地址 int a = 5;
2、指针的指向是可以改变的
3、指针没有初始化里面是一个垃圾值(0x0),这时候我们这是一个野指针, 如果操作一个野指针
1)可能会导致程序崩溃
2)访问你不该访问数据 "所以指针必须初始化才可以访问其所指向存储区域"


//--------两个有关的运算符:
& :取地址运算符;
* :指针运算符(或称"间接访问" 运算符)。



int *p = &a;

*&a ---->  a

&变量名;

*指针变量名


关于*的使用注意:
1)在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量

int a = 5;

int *p = &a;

int *p1 = p;


2)在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间的内容

int x = *p;


评分

参与人数 1黑马币 +12 收起 理由
zimi626 + 12 淡定

查看全部评分

1 个回复

倒序浏览
不错!是我们新入学的福利!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马