- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言指针总结
第八章: 指针
知识结构:
1)指针的基本概念
2)怎么定义指针
3)指针的运算
1)指针的基本概念
内存:以字节为单位,由若干个字节组成
为了便宜管理,给每个字节编号(十六进制)
每一个字节的编号在整个内存都是唯一
定义变量:在计算机内存中去预定内存
各类变量所预定的空间大小不同
整型:int TC 2字节 VC 4字节
long TC 4字节 VC 4字节
short TC 2字节 VC 2字节
实型:float TC 4字节 VC 4字节
字符型: char TC 1字节 VC 1 字节
变量的地址,指向变量的指针
用来存储变量地址的变量,指针变量
指针变量只能存储地址,类型必须要一致才能存储
scanf(%d,a);
2)定义指针变量
int a,b;
int *p,*q;
类型名 *指针变量名1,*指针变量名2...
类型名 :该指针变量的基本类型,只能存储对应类型变量的地址
*:指明该变量是一指针类型的变量(只能存储地址)
float *ft1,*ft2;
double *db1,*db2;
指针变量名: 不包括*号
怎么样去访问变量的内容:
1)拿到该变量的地址,直接对该地址进行访问
2)通过指针变量来间接访问存储单元
怎么样给指针变量赋值:
int a,b;
int *p,*q;
获取变量的地址:
可以用取地址运算符 (),将变量的地址取出
变量名 : 将指定变量的首字节的编号拿到
得到指定变量的地址
p = a; :将a的地址取出存储到指针变量p中
通过p可以间接访问变量a
p就是指向变量a的指针
q = b;
注意: 指针变量的类型必须和变量的基类型是一致才能存储
q = 10; /*指针只能存储地址值*/
int a,b,*q,*c,*p;
p = a;
q = b;
c = p; /*将p中的内容取出,赋值给指针c,使指针c和指针p同时指向p所指向的变量*/
可以让指针不指向任何存储单元:
int *p;
p = NULL;
P = 0;
P = \0;
上面三种方式,都可以使指针p没有指向
int a,*p;
int **q;/*指向指针的指针变量*/
p = a;
q = p;
指向指针的指针变量:
基本类型 **指针变量名1,**指针变量名2...
只能存储指针变量的地址,指向的是指针
用指针怎么样来访问变量:
*指针变量名;
*: 运算符将指针所指向的变量内容访问出来
int a,*p;
a = 10;
p = a;
a = *p
int a,*p,**q;
a = 10;
p = a;
q = p;
a *p **q
*都是单目运算符
左边必须是一个变量名,不能表达式或常量
左边必须能够代表一个唯一的存储单元地址
错误赋值表达式:
(A+B) = 10
10 = 10
从键盘上输入两个整数,然后输出
*:定义语句中出现时,表示该变量是一个指针变量
执行语句中出现时,代表间接访问指针变量所指向变量的值
#include stdio.h
void main()
{
int a,b,*p=a,*q,*c,d;
q = b;
c = d;
*c = *p;
scanf(%d%d,p,q);
printf(a=%d,b=%d\n,*p,*q);
}
10 20
a=10,b=20
Press any key to continue
1)指针变量在定义时就可以给其进行初始化操作
*:定义语句中出现时,表示该变量是一个指针变量
执行语句中出现时,代表间接访问指针变量所指向变量的值
2)凡是出现a地方,都可以指针p去代替
3)凡出现a的地方,都可以用间接访问指针去代替(*p)
指针: 为操作存储单元提供一种间接的访问方式
直接访问变量名属于直接操作
2.交换a,b两个变量的值(指针来操作)
#include stdio.h
void main()
{
int a,b,*p=a,*q=b,t;
scanf(%d%d,p,q);
printf(1)a=%d,b=%d\n,*p,*q);
t = *p;
*p = *q;/*将指针变量q所指向变量的值取出来赋值给指针变量p所指向的存储单元中*/
*q = t;
printf(2)a=%d,b=%d\n,*p,*q);
}
10 20
1)a=10,b=20
2)a=20,b=10
Press any key to continue
3.输入两个数,找出
文档评论(0)