网站域名实名认证吗,建设局网站更改法人所需材料,温州网络推广平台建设,1cpu0.5g服务器用来做网站区分数组指针和指针数组
int *p[3]和 int (*p)[3]
根据运算符的优先级#xff0c;[]的优先级是高于“*”的#xff0c;p就会先与[]结合#xff0c;那么它本质就是数组#xff0c;数组内存放的是指针#xff0c;它叫指针数组。#xff08;int*p[3]#xff…区分数组指针和指针数组
int *p[3]和 int (*p)[3]
根据运算符的优先级[]的优先级是高于“*”的p就会先与[]结合那么它本质就是数组数组内存放的是指针它叫指针数组。int*p[3]。
因为括号优先级较高p就先和“*”结合那么它本质上就是指针叫数组指针存放的是数组的地址。既然本质是指针那么它在32位系统里始终占4个字节就是单纯的一个数组的地址。
int(*p)[3]。
数组指针
数组指针是一个指向数组的指针。它可以用来访问整个数组尤其是当我们希望传递数组到函数时。
定义
int arr[5] {1, 2, 3, 4, 5};
int (*ptr)[5] arr; // ptr是指向一个包含5个整数的数组的指针
使用方法
#include iostream void printArray(int (*p)[5]) { // 参数是指向一个包含5个整数的数组的指针 for (int i 0; i 5; i) { std::cout (*p)[i] ; // 通过解引用访问数组元素 } std::cout std::endl;
} int main() { int arr[5] {1, 2, 3, 4, 5}; printArray(arr); // 传递数组的地址 return 0;
}
数组指针也称行指针也就是说当指针p执行p1时指针会指向数组的下一行
如
int a[3][4];
int (*p)[4]; //p是一个数组指针指向了一个包含4个int型元素的数组
pa; //将二维数组的首地址赋给p即a[0]或a[0][0]
p; //跨过第一行p指向了a[1][0]
指针数组
指针数组是一个数组其中每个元素都是一个指针。它可以用来存储多个指针这些指针可以指向不同的数据类型或对象
定义
int* ptrs[5]; // ptrs是一个包含5个指向整数的指针的数组
使用方法
#include iostream int main() { int a 10, b 20, c 30; int* ptrs[3]; // 指针数组 ptrs[0] a; // 指针指向不同的变量 ptrs[1] b; ptrs[2] c; for (int i 0; i 3; i) { std::cout *ptrs[i] ; // 解引用指针数组访问值 } std::cout std::endl; return 0;
}
指针数组是一个包含若干个指针的数组p是数组名当执行p1时则p会指向数组中的下一个元素。
如
int a[3][4];
int *p[3]; //定义了一个数组该数组中有3个int*指针变量分别为p[0]、p[1]、p[2]
//p; //若执行此语句则数组p指向下一个数组元素
for(int i0;i3;i){p[i]a[i]; //数组p中有3个指针分别指向二维数组a的每一行
}
总结
数组指针是指向数组的指针通常用于处理数组作为一个整体特别是在函数参数中传递整个数组。
指针数组是由指针组成的数组它可以存储多个独立的指针可以指向不同的内存位置。