指针输出与取地址符输出

对*p 和&p 其中数值的数值输入及输出比较
这里写图片描述

其结果是
这里写图片描述
P是一个指向a的指针,所以对于3和4的结果则是一
样的都是a所在存储的地址。而对于5来说,就是取的
是p这个指针的地址。

7是对指针指向字符串正确的输出方法
8则是输出name存放的地址,而非pi的地址
9因为使用的是%c仅仅输出一个字符
10 因为是%d 输出的是n的ascll码 110

对视19 则是错误的
并且“%c“,pi )输出不了什么东西。

对于12 和 17的答案是一样的,对于字符串的输入
则有两种。
15和16的一样,代表对其地址的输出两种,

20的错误在于数组的输入最后会把“name\0“5个字符输入则需要5个字符空间。
这里要讨论一下7和15
对于7来说我们仅仅是将地址输入指针,计算机自动的通过%s
将指针指向的头字符的地址开始显示,直到\0结束。
对于15,我们仅仅将pii数组输入,用%d显示得到的地址,而不需要&取地址符。

<think>好的,我现在需要解释一下取地址符指针的概念。首先,我得回忆一下C语言中的相关知识。取地址符是&,用来获变量的内存地指针则是存储地的变量,用*声明。 用户可能想知道它们的基本用法和区别。比如,如何用&获,然后用指针来存储和操作这个地。需要举例说明,比如int a=10; int *p=&a; 这里p存储了a的地,*p可以访问a的值。 还要注意指针本身的类型和所指向的数据类型要匹配。比如int指针只能指向int变量。可能需要提到指针的大小在不同系统下的差异,比如32位和64位系统。 另外,指针的解引用操作,即通过*访问或修改指向的值。还有指针的算术运算,比如减操作,这会影响地的值,步长决于数据类型。 可能还要区分指针取地址符的不同角色:&用于获,而指针用于存储和操作地。同时,指针变量本身也有自己的地,可以用&获。 需要检查是否有错误,比如指针未初始化就使用会导致问题。还有空指针和野指针的概念,但用户可能暂时不需要这些细节,保持解释简洁。 最后,用例子来总结,说明如何通过指针修改变量的值,以及如何通过地传递参数到函数中,实现引用传递的效果。</think>在C/C++编程中,取地址符指针是密切相关的两个重要概念: 1. **取地址符 `&`** - 作用:获变量的内存地 - 示例: ```c int a = 10; printf("%p", &a); // 输出a的内存地 ``` - 特点: * 只能对左值(有明确内存位置的变量)使用 * 数组名使用时自动转换为地(不需要&) * 函数名使用时表示函数入口地 2. **指针 `*`** - 作用:存储内存地的特殊变量 - 声明方式: ```c int *ptr; // 声明整型指针 char *cp; // 声明字指针 ``` - 核心操作: ```c int b = 20; int *p = &b; // p存储b的地 *p = 30; // 通过指针修改b的值 ``` **关键区别联系:** | 特性 | &() | *(指针) | |-----------|----------------|------------------| | 运算类型 | 单目运算 | 类型修饰/解引用运算 | | 操作对象 | 变量 | 地值 | | 结果类型 | 指针类型 | 根据使用场景不同 | | 典型用法 | 获变量地 | 声明指针变量/访问指针指向的值 | **内存关系示例:** ``` 变量存储: [ 地0x1000 ] → int a = 10 [ 地0x2000 ] → int *p = 0x1000 操作示例: p = &a; // p存储a的地 *p = 20; // 修改a的值 ``` **重要注意事项:** 1. 指针类型必须指向变量类型匹配 2. 未初始化的指针(野指针)会导致未定义行为 3. 指针运算的步长决于指向类型: ```c int arr[5]; int *p = arr; p++; // 地sizeof(int)字节 ``` **典型应用场景:** - 动态内存分配(malloc/new) - 函数参数传递(引用传递) - 数据结构实现(链表、树等) - 数组遍历和操作 理解指针取地址符的关系是掌握C/C++内存管理的关键。通过`&`获,用指针存储和操作地,最终通过`*`访问目标内存,这种间接访问机制为底层内存操作提供了强大的灵活性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值