C/C++中*和&的用法详解

640?wx_fmt=gif

C++中&和*的用法一直是非常让人头疼的难点,课本博客上讲这些知识点一般都是分开讲其用法的,没有详细的总结,导致我在这方面的知识结构格外混乱,在网上找到了一篇英文文章简单总结了这两个符号的一些用法,都是一些比较基础的知识,我比较关心的函数指针,指针函数等都没有涉及到,今后有时间把这部分学明白整理出来。

C/C++中*和&的用法

C++语言是C语言的超集。几乎所有可以运行的C程序都是可以运行的C++程序。因此,写一个不包含C++特性的C++程序是可能的,尽管cout和引用的使用(见下文)更好的构成了一个C++程序。C++和C在代码格式上偶尔会有不同,比如,在C语言中,我们这样把p声明为一个int类型的指针 int *p,而在C++中我们使用int* p(编译器并不在意你使用的是哪种格式)。

在C/C++中,*和&有很多用法,具体的使用要根据代码内容来确定。

C中*的用法

(a) 乘法运算:x=y*z;

(b) 乘法赋值运算:x*=y;相当于x=x*y

(c) 注释:/*这里是你的注释*/

(d) 指针的声明:int *p 或 int* p; 读法:p是指向一个整数类型的指针。

(e) 复合指针:int **p; 或 int** p; 读法 p是一个指向一个指向整数类型的指针的指针。(同样道理, int***p等等)

(f) 解引用:x=*p 把指针p指向的值赋值给x

&在C语言中的用法

(a) 逻辑与:if((a>1)&&(b<0))

(b) 位运算与:x=a&b;

(c) 逻辑与赋值:x&=y;与 x=x&y含义相同

(d) 求地址运算符:p=&x;读法:把x的地址赋给p(指针)

C++中&的补充用法

C++中有一种C不存在的变量类型引用变量(简单说来为引用),尽管在C语言中用指针也可以实现类似的功能。

引用,指针,地址是联系密切的概念。地址是在电脑内存中的地址(一般是一些变量的值在内存中的储存位置),指针是存地址的变量,所以指针可以“指向”内存地址。概念上讲,引用变量本质上是指针的另一个名字(但是并不能被编译器实例化)

在函数内像其他变量一样定义一个引用是可能的;举例

void main(void)  	
{  	
int i;  	
int&amp; r = i;  	
... 	
}

但是这是没有意义的,因为引用的使用和对引用的变量的使用是一样的。

引用在函数的参数中被使用。

void main(void)  	
{  	
int i=3; 	
f(i);  	
cout &lt;&lt; i;  	
} 	
void f(int&amp; r)  	
{  	
r = 2*r;  	
}

这段程序输出“6”(2*r使被r引用的变量加倍,也就是指i)

在C语言中,实现同样的功能,我们可以通过声明f()为void f(int *r),其中r是指向整数类型的指针,然后调用参数&i(i的地址)调用函数f(),在函数f()内使用r的解引用,但是显然,C++提供了一种更简明的通过引用的方式向函数传值,从函数中返回值。

640?wx_fmt=png

640?wx_fmt=png

它,

不仅仅是一个码

扫码关注

PHP资源免费送

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++的vector是一个动态数组,具有可变大小,可以在运行时向其添加或删除元素。以下是vector的用法详解: 1. 头文件 使用vector需要包含头文件vector。 ```c++ #include <vector> ``` 2. 创建vector 可以使用以下方式创建vector: ```c++ // 创建一个空的vector std::vector<int> vec1; // 创建一个有5个元素的vector,每个元素都是0 std::vector<int> vec2(5); // 创建一个有3个元素的vector,每个元素的初始值是1 std::vector<int> vec3(3, 1); // 创建一个vector,初始化为另一个vector std::vector<int> vec4(vec3); ``` 3. 访问vector元素 可以使用以下方式访问vector的元素: ```c++ std::vector<int> vec{1, 2, 3, 4, 5}; // 使用下标访问元素 int a = vec[0]; // 使用at函数访问元素 int b = vec.at(1); // 使用front函数访问第一个元素 int c = vec.front(); // 使用back函数访问最后一个元素 int d = vec.back(); ``` 4. 添加元素 可以使用以下方式向vector添加元素: ```c++ std::vector<int> vec{1, 2, 3}; // 在尾部添加一个元素 vec.push_back(4); // 在指定位置插入一个元素 vec.insert(vec.begin() + 2, 5); // 在尾部添加另一个vector的所有元素 std::vector<int> vec2{6, 7, 8}; vec.insert(vec.end(), vec2.begin(), vec2.end()); ``` 5. 删除元素 可以使用以下方式删除vector的元素: ```c++ std::vector<int> vec{1, 2, 3, 4, 5}; // 删除尾部元素 vec.pop_back(); // 删除指定位置的元素 vec.erase(vec.begin() + 2); // 删除指定范围的元素 vec.erase(vec.begin() + 1, vec.begin() + 3); // 删除所有元素 vec.clear(); ``` 6. 获取vector信息 可以使用以下方式获取vector的信息: ```c++ std::vector<int> vec{1, 2, 3, 4, 5}; // 获取元素个数 int size = vec.size(); // 获取容量 int capacity = vec.capacity(); // 判断vector是否为空 bool empty = vec.empty(); ``` 以上是vector的基本用法,可以根据实际需要对其进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值