C程序程序设计-指针(定义、地址运算符、间址运算符、练习题)

本文详细介绍了C语言中的指针概念,包括指针的引入、定义、地址运算符和间址运算符的应用,以及指针与数组的关系,通过实例演示了如何使用指针进行内存操作和数组遍历。
摘要由CSDN通过智能技术生成

👨‍ Biaoge ⏰于2024-03-08 00:09发布 👓阅读量:15402🏷️文章类型:【 C语言程序设计 】

C语言程序设计——指针详解

一、指针的引入
指针是C语言中的一个重要概念,它允许我们直接访问内存地址,并通过这些地址操作存储在内存中的数据。指针为程序员提供了一种更直接、更灵活的方式来管理和操作内存。

二、指针的定义
指针是一个变量,其存储的是另一个变量的地址。指针变量的类型必须与它所指向的变量的类型相匹配。

int var = 10; // 一个整型变量
int *ptr = &var; // 一个指向整型的指针变量,存储var的地址


在上面的代码中,ptr是一个指针变量,它的类型是int *,表示它指向一个整型变量。&var是取地址运算符,它返回变量var在内存中的地址。


三、地址运算符&
地址运算符&用于获取变量的内存地址。

#include <stdio.h>

int main() {
int num = 20;
int *p = # // p指向num的地址
printf("Address of num: %p ", (void *)&num); // 打印num的地址
printf("Value of p: %p ", (void *)p); // 打印p中存储的地址,应该与num的地址相同
return 0;
}


运行这个程序,你会看到num的地址和p中存储的地址是相同的。


四、间址运算符*
间址运算符*用于通过指针访问它所指向的值。当*用于定义指针变量时,它表示该变量是一个指针;当*用于指针变量前时,它表示取该指针指向的值。

#include <stdio.h>

int main() {
int num = 20;
int *p = # // p指向num的地址
printf("Value of num: %d ", num); // 直接访问num的值
printf("Value pointed by p: %d ", *p); // 通过p访问num的值
return 0;
}


在这个程序中,*p表示取p指向的值,即num的值。因此,printf语句会输出相同的值。


五、指针与数组
指针在数组操作中特别有用,因为数组名其实就是数组首元素的地址。

#include <stdio.h>

int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p = arr; // p指向数组首元素的地址
for (int i = 0; i &lt; 5; i++) {
printf("%d ", *(p + i)); // 通过指针运算访问数组元素
}
return 0;
}


这个程序定义了一个整型数组arr,并将指针p初始化为指向数组的首元素。然后,通过一个循环和指针运算,我们可以访问数组的每个元素。


六、小试题
1. 填空题
请补全以下代码,定义一个指向整型的指针ptr,并将其初始化为指向变量x的地址。

int x = 10;
int ____ ptr = &x;


2. 选择题
以下哪个选项正确地描述了*ptr的含义?
A. ptr所指向的值
B. ptr的地址
C. ptr的类型
D. ptr的大小

3. 编程题
编写一个C语言程序,定义一个整型数组和一个指向该数组的指针。使用指针访问并打印数组的所有元素。


感谢你的观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彪哥.TOP

稀罕作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值