黑马程序员——11-C语言补充之指针

本文详细介绍了C语言中的指针,包括指针变量的定义、使用、类型、操作以及指针与数组、字符串、函数和数组的交互。特别强调了指针在内存管理和函数调用中的重要性,并提供了实用示例,帮助读者掌握C语言指针的核心概念。
摘要由CSDN通过智能技术生成


一、指针变量

<> 指针简介

指针是C语言中非常重要的数据类型,可以说不掌握指针就没有掌握C的精华。

我们可以通过地址找到所需的变量单元,地址指向该变量单元,因此地址形象化地称为“指针”。一个变量的地址称为该变量的指针,指针变量的值是地址,而且指针变量只能存放地址。指针变量就是用来存放地址的变量。

<> 指针变量的定义

1、定义的格式

变量类型  *指针变量名;

int  *p;// 定义了指针变量p

 

  • 指针变量 p 只能指向 int 类型的数据
  • 指针变量只能存储地址
  • 指针作用:能够根据一个地址访问对应的存储空间

2、先定义后赋值

  • 简单取值

int  *p;// 定义了指针变量p

int a = 10;

p = &a; // 指针变量p指向了变量a

printf(“%d”, *p);

  • 简单改值

*p = 9; // 访问指针变量p指向的存储空间,对其进行赋值

3、定义的同时赋值

int  a= 10;

int  *p= &a;

4、实现修改实参

void change(int *n)

{*n=10;}

函数调用完毕后,改变实参的值

<> 指针实例

1、交换两个数的值

void swap(char *a, char *b) 
{
	int temp;
	temp=*a;
	*a = *b; 
	*b = temp;
}

2、利用指针间接返回多个值

int sumAndMinus(int a, int b, int *minus)
{
	*minus=a-b;
	reurn a+b;
}

<> 指针探究

1、指针变量所占用的存储空间

任何指针都占用8个字节的存储

int *i;

char *c;

printf(“i=%zd,c=%zd\n”,sizeof(i),sizeof(c));

注:sizeof的返回值类型为unsigned long%zd格式输出

2、为何指针变量要分类型?

示例:

int i = 2;
char c = 1;
char *p = &c;
printf("c的值为%d", *p);

结果为:c的值为1

 

int i = 2;
char c = 1;
int *p = &c;//注意区别,编译有警告
printf("c的值为%d", *p);
结果为: c 的值为 513

分析:结果不同是因为指针变量类型不同

printf(“c的值为%d”, *p); *p表示从p所指向的存储空间取值,pint类型,占4个字节,也就是从地址ffc8处开始取4个字节数据,取值为00000000 0000 0000 0000 0010 0000 0001

即十进制513。对于赋值*p=10;则会从起始地址开始把10存储在4个字节中。

所以指针分类型是为了赋值时要把数据存放在多少个字节内,取值时取出多少个字节内的数据。

   


<>注意点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值