IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【c/c++夯基】指针,辨别*p=&a; p=&a; *p=a; -> 正文阅读

[C++知识库]【c/c++夯基】指针,辨别*p=&a; p=&a; *p=a;

先说题目指出的三个语句的结果。

*p=&a;错误写法
p=&a;正确,把变量a的地址赋给指针p;
*p=a;正确,把变量a的值赋给指针p指向的地址的内容;

来详细看看为什么。

#include <iostream>
using namespace std;
int main()
{
    int a=10;
    int *p=&a; //定义一个(int型)指针变量
    
    cout<<"*p:"<<*p<<endl;
    
    *p=*p+1;
    cout<<"*p:"<<*p<<endl;

    return 0;
}

其中,int *p=&a;
*p就是取变量a的内容,即x=*p;等价于x=a;
&a就是取变量a的地址

部分初学者可能会有以下的错误赋值想法:

	int a=10;
    int *p;
    *p=&a;

认为 *p是存放变量a的内容,所以把&a(也就是a的地址)存放在 *p中啊,而且写法跟上文并无不同,为什么会是错的呢?难道指针必须在初始化阶段赋值?

首先,赋值方法是错误的

这里有一个盲点。
初学者在学习其他变量时,会注意到声明了什么变量,在之后使用的时候变量名和定义时的变量名是一样的,比如:

	int a;
	float b;
	char c;
	a=10;
	b=1.01;
	c='c';

但是,在指针这里出现了一个与众不同的存在——声明符*,因此,我们虽然定义了一个写成*p的指针变量,但在使用的时候并不能把它看成一个不可分割的整体。(一开始学的时候很可能会拐不过弯来)

int *p;在这里定义了一个int型指针对吧?
但写成这样可能更会让初学者理解——int* p;
——定义了一个指针,指针变量名是p!不是*p

P.S.以上两种写法是一样的,但是声明符*最好紧跟着变量名。

要知道,当定义了一个变量,就会开辟一个内存,包括变量的地址和变量的值,而定义的指针也同样,只不过指针变量的值就是要指向的变量的地址

指针的值叫做指针,他是一个内存地址,是一个数据。
指针变量是一个空间,他有自己的地址。

至于指针是否需要开辟内存,主要取决于指向的空间本身是否有内存。

现在再来看,p是我们定义的指针;p=&a;就是把变量a的地址存在p中;想要通过指针来调用变量a的内容,就使用*p

也能看出来*p=&a;这个明显的错误:这条语句在试图把变量a的地址赋值给变量a的内容!

最后,我们已经知道了是赋值的错误,就不是指针必须在初始化阶段赋值啦!

最近复习数据结构,记录一下有些会混淆/不太清楚的知识点,如果发现有内容错误处,评论指出,教学相长,感激不尽。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:46:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 7:21:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码