指针的简单使用
本人很菜,决定先学下指针最简单的使用,便于调用函数
相关概念
指针变量的声明
指针变量的声明需要指定变量类型和指针所指向的数据类型,例如:
1 | int* p; // 声明一个指向整型变量的指针变量p |
取地址符& 指针运算符*
**&**是取地址符,可以用来获取变量的内存地址。例如:
1 | int a = 10; |
**是指针运算符,可以用来获取指针所指向的变量的值*,也可以用来修改指针所指向的变量的值。例如:
1 | int a = 10; |
指针的运算
指针可以进行加减运算,指针加上一个整数n的结果是指针指向的地址加上n倍指针所指向变量的大小。例如:
1 | int a[5] = {1, 2, 3, 4, 5}; |
指针的类型转换
指针变量的类型可以通过强制类型转换进行改变。例如:
1 | int a = 10; |
需要注意的是,指针类型的转换可能会丢失精度或导致错误,应谨慎使用。
调用函数返回多个结果
使用例
1 |
|
数组指针
数组指针(Pointer to array)是指向数组的指针变量。和普通指针不同的是,数组指针在声明时需要指定指针所指向的数组类型和数组的维数。
数组指针的声明语法如下:
type (*ptr)[size];
其中,type是数组元素的类型,ptr是指针变量的名称,size是数组的维数。例如,下面是一个指向int类型、维数为3的数组的指针变量的声明:
1 | int (*ptr)[3]; |
注意
数组指针可以指向任何维数的数组,但是数组指针的类型必须和它所指向的数组的类型和维数一致,否则会出现类型不匹配的错误。
使用数组指针访问数组元素时,需要使用指针运算符和下标运算符。例如,要访问数组a中第i行第j列的元素,可以使用以下语法:
1
*(*(a+i)+j)
数组指针可以用于函数参数传递。例如,可以将一个指向int类型数组的指针变量作为函数参数传递给一个函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
void func(int (*ptr)[3], int* x, int* y, int* z)
{
// 访问数组元素
*x = (*ptr)[0] + 1;//为了区分,我们再做一点运算
*y = (*ptr)[1] + 1;
*z = (*ptr)[2] + 1;
}
int main()
{
int x,y,z;
int a[3] = {1, 2, 3};
int (*ptr)[3] = &a;//数组指针
func(ptr,&x,&y,&z);
for(int i=0; i<3; i++)
{
cout << (*ptr)[i] << ' '; //指向数组元素
}
cout << endl;
cout << x << ' ' << y << ' ' << z << endl; //访问并进行运算后返回的值
return 0;
}1
21 2 3
2 3 4
使用例
1 |
|
1 | -100 |
这下可以随便封装、调用函数了
此文章版权归shuomc所有,如有转载,请注明来自原作者
评论