首页 > 编程语言 >18、复合类型之指针(P47、P48、P49、P50);C++ primer 2.3.2

18、复合类型之指针(P47、P48、P49、P50);C++ primer 2.3.2

时间:2023-09-10 22:56:42浏览次数:53  
标签:cout 指向 int 18 C++ 地址 P47 声明 指针

1、C++中的“声明符”是什么?

声明符是用来指定变量或函数的类型、名称和属性的符号。例如:

  • int list[20]; 声明了一个名为 list 的整型数组,它有 20 个元素。int是类型说明符,list[20]是声明符
  • char *cp; 声明了一个名为 cp 的指向字符的指针1。*cp是声明符
  • double func( void ); 声明了一个名为 func 的函数,它没有参数,返回一个双精度浮点数。func( void )声明符

2、因为引用不是对象,没有实际地址,所以不能定义指向引用的指针。

这句话的意思是,引用不是一个独立的变量,它只是某个变量的别名,所以它没有自己的地址,也不能被取地址。指针是一个变量,它存储的是一个地址,指向内存的一个存储单元,所以它有自己的地址,也可以被取地址。举个例子:

int a = 10; // 定义一个整型变量 a
int &b = a; // 定义一个引用 b,指向 a
int *c = &a; // 定义一个指针 c,指向 a 的地址
int *d = &b; // 定义一个指针 d,指向 b 的地址
int **e = &c; // 定义一个指针 e,指向 c 的地址
// int *&f = &b; // 错误!不能定义指向引用的指针
cout << "a = " << a << endl; // 输出 a 的值
cout << "b = " << b << endl; // 输出 b 的值,等于 a 的值
cout << "c = " << c << endl; // 输出 c 的值,等于 a 的地址
cout << "d = " << d << endl; // 输出 d 的值,等于 b 的地址,也等于 a 的地址
cout << "e = " << e << endl; // 输出 e 的值,等于 c 的地址
// cout << "f = " << f << endl; // 错误!不能输出 f 的值
cout << "&a = " << &a << endl; // 输出 a 的地址
cout << "&b = " << &b << endl; // 输出 b 的地址,等于 a 的地址
cout << "&c = " << &c << endl; // 输出 c 的地址
cout << "&d = " << &d << endl; // 输出 d 的地址
cout << "&e = " << &e << endl; // 输出 e 的地址
// cout << "&f = " << &f << endl; // 错误!不能输出 f 的地址

运行结果:

a = 10
b = 10
c = 0x7ffeefbff5ac
d = 0x7ffeefbff5ac
e = 0x7ffeefbff5a0
&a = 0x7ffeefbff5ac
&b = 0x7ffeefbff5ac
&c = 0x7ffeefbff5a0
&d = 0x7ffeefbff5a8
&e = 0x7ffeefbff598

从上面的例子可以看出,引用 b 和变量 a 是同一个东西,它们的值和地址都相同;而指针 c 和 d 是不同的东西,它们的值是 a 的地址,但它们自己也有不同的地址;而 e 是指向指针的指针,它的值是 c 的地址,它自己也有不同的地址。所以,引用和指针是有本质区别的。

3、什么是声明语句?

声明语句是一种用来为变量、常量、函数、类型或命名空间等实体命名和指定类型的语句12345。声明语句可以出现在不同的编程语言中,如C、C++、Java、Visual Basic等,但具体的语法和规则可能有所不同。例如:

// Java 中的声明语句
int x; // 声明一个整型变量 x
String s = "Hello"; // 声明一个字符串变量 s,并赋值为 "Hello"
final double PI = 3.14; // 声明一个常量 PI,并赋值为 3.14
void print(String msg) { // 声明一个函数 print,参数为字符串 msg
    System.out.println(msg); // 函数体
}

2.4.2

2.4.3

2.6.3

6.1.3

6.4

15.2.3

19.2

标签:cout,指向,int,18,C++,地址,P47,声明,指针
From: https://www.cnblogs.com/xzit201802/p/17690336.html

相关文章

  • c++中的数论知识
    写在开头:word的公式打不上来,只能截图了一.组合数学(1)加法定理与乘法原理加法原理:做一件事情,完成它可以有n类办法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法。那么完成这件事共有N=m1+m2+…+mn种不同的方法。乘法原理:做一......
  • 【题解】CF1830E Bully Sort
    考虑一次交换,我们发现,被选出来的\([i,j]\)的区间里\(p_i\)一定是最大的,\(p_j\)一定是最小的。然后我们会发现,我们原序列的逆序对数量会减少\(2(j-i)-1\),而\(\sum|p_i-i|\)会减少\(2(j-i)\)那么答案就是原序列的两部分相减(神奇的性质又增加了!)。至于我们的后半部分显......
  • C++的运算符重载介绍
    所谓重载,就是赋予新的含义。函数重载(FunctionOverloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(OperatorOverloading)也是一个道理,同一个运算符可以有不同的功能。实际上,我们已经在不知不觉中使用了运算符重载。例如,+号可以对不同类型(int、float等)的......
  • C++的知识
    首先,让我们了解一下C++是什么。C++是一种高级的面向对象编程语言,泰兰德幻,它是C语言的扩展。由于其高度的灵活性和强大的功能,C++在各种领域中得到了广泛的应用,尤其在游戏开发、系统编程和嵌入式设备等方面。C++的优势之一是其强大的数据类型系统。C++支持不同的数据类型,包括整数、......
  • C++ 算法竞赛、03 周赛篇 | AcWing 第4场周赛
    AcWing第4场周赛竞赛-AcWing3694A还是B3694.A还是B-AcWing题库简单题#include<algorithm>#include<cstring>#include<iostream>usingnamespacestd;intn;inta,b;intmain(){cin.tie(0);charc;cin>>n;for(int......
  • 【题解】CF1830B The BOSS Can Count Pairs
    你考虑,我们观察数据范围,发现可以是\(O(n\sqrtn)/O(n\logn)\)的,我们又看到乘法,便有几个大概的想法:数论分块\(O(\sqrtn)\)枚举其中一个乘数还有什么……(笔者学识浅陋,读者可以帮忙补充)我们可以找到两种\(O(n^2)\)做法:\(O(n^2)\)枚举数对\((i,j)\)然后进行判断。......
  • 2018-2019 9th BSUIR Open Programming Championship
    I.EqualModSegments\(1\leqn\leq1e5\)\(1\leqa_i\leq3e5\)题解:ST表+扫描线+二维偏序取模存在一个不错的性质:\(x\%p\)要么\(x\)不变,要么\(x\)至少整除\(2\)所以我们考虑固定左端点\(l\),存在\(log\a_l\)段区间,使得右端点\(r\)在每段区间\([p,q]\)内\(......
  • cpp: vscode 配置C,C++
    下载编译器MinGW并解压官网页面:https://www.mingw-w64.org/下载页面:https://sourceforge.net/projects/mingw-w64/files/https://cmake.org/download/需要环境变量进行设置task.json:{"tasks":[{"type":"cppbuild",&quo......
  • 【题解】[ABC318F] Octopus(思维)
    【题解】[ABC318F]Octopus题目链接F-Octopus题意概述有个机器人,它有\(n\)个手臂,第\(i\)个手臂长度为\(l_i\)。同时有\(n\)个宝藏,第\(i\)个宝藏的坐标是\(x_i\)。当机器人位于\(k\)时,它的第\(i\)条手臂可以够到\([k-l_i,k+l_i]\)范围内的宝藏。机器人的每......
  • C++编程语言在线学习系统-计算机毕业设计源码+LW文档
    摘要随着互联网技术的推进,我国高等教育逐渐实现信息化。许多精品C++编程语言在线学习系统的开发建设大大提高了教职工的教学效率,也为培养更多的高素质人才提供了途径。但是C++编程语言在线学习系统的发展也存在交互性不强、资源更新缓慢、教学形式单一等问题。因此,笔者设想开发一......