c语言关于指针总结,c语言指针总结.doc

本文详细介绍了C语言中的指针概念,包括指针的定义、类型匹配、指针运算以及如何通过指针访问和交换变量的值。通过实例展示了指针在内存管理中的作用,如如何通过取地址运算符(&)获取变量地址,并通过指针间接访问变量。还讨论了指针初始化、指针变量间的赋值以及指向指针的指针等高级主题。并提供了代码示例来演示指针在实际编程中的应用。
摘要由CSDN通过智能技术生成

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=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值