以下是引用lin5161678在2020-3-31 14:52:22的发言:
那么 你描述一下 一级指针的 一元&操作和一元*操作 和 指针算术
比如 int*
我不懂什么是一元二元的
&符号目前我知道有三种意思
1,位运算的和运算符英文是bit-and
2,是引用符号
3,是取地址符号
*目前我知道三种
1,乘法符号
2,指针符号
3,解引用符号
关于一级指针,用的最多的是指针运算符,取地址运算符和取消引用运算符
在定义一个变量的时候会分配一个空闲地址,然后变量的任何值会存在地址中
程序代码:
#include <iostream>
using namespace std;
int main()
{
int num=4;
cout<<&num<<" ";
int * p=#
cout<<*p;
}
cout<<&num<<"
从上面的例子看,使用了取地址符号看见了分配变量的地址
int * p=#
p是指向一个int类型的指针,p里装的是num的指针,num通过取地址符,返回一个带有值地址的指针,p接收num的地址
cout<<*p;
此地为解引用符号,取消引用访问特定地址的值
指针算数
我目前只知道数组啊,还有迭代器,本人基础差,还需要学习的更多,
程序代码:
#include <iostream>
#include<vector>
using namespace std;
void arraynum()
{ vector <int>myarray{1,2,3,4};
myarray.resize(5);
cout<<&myarray[0]<<" ";
cout<<&myarray[1]<<" ";
cout<<&myarray[2]<<" ";
cout<<&myarray[3]<<" ";
cout<<&myarray[4]<<" ";
}
int main()
{
int num=4;
cout<<&num<<" ";
int * p=#
auto tex1= p+1;
auto tex2=p+2;
auto tex3=p+3;
cout<<tex1<<" ";
cout<<tex2;
arraynum();
}
从上面可以看见,p+1,+2,+3..表示加了多少类型字节数,int型的
p+3,表示地址加了3个整数12个字节,
如果用在数组上表示数组第几个元素的地址,使用解引用符号就可以看见里面的值*(myarray+1)