数组是一个整体,它的内存是连续的,那么我们可以直接通过首地址(数组名默认就是首地址)偏移来达到数组遍历的效果,内存示意图: intarr[] = {1,2,3,4,5};intvalue0 = *(arr);//arr默认指向数组的首地址,获取数组第一个元素的值intvalue1 = *(arr +1);//数组首地址偏移 +1 ,获取数组第二个元素的值...
指针声明与初始化:我们声明了一个指针变量q,类型为int *,然后将arr1(也就是数组首元素的地址)赋值给它,即int *q = arr1;。这就使得q指向了arr1数组的第一个元素。 指针运算与元素访问:当我们进行*(q + 1)操作时,基于指针运算规则,q + 1表示将指针q从当前所指向的位置(也就是arr1[0]的地址)向后移...
( 1 ) 指针 比较 运算 ( 大于 小于 大于等于 小于等于 运算的前提是 必须指向同一数组 中的元素 | 任意两指针只能进行 等于 不等于 的比较 ) ( 2 ) 指针 比较 运算代码示例 ( 用 指针 遍历数组 ) 3. 数组访问方式 ( 1 ) 下标 指针 访问 ( 推荐使用下标访问 ) ( 2 ) 下标 指针 访问 数组 性能...
更改上面的代码,使用数组指针来遍历数组元素: 数组在内存中只是数组元素的简单排列,没有开始和结束标志,在求数组的长度时不能使用,因为 p 只是一个指向 int 类型的指针,编译器并不知道它指向的到底是一个整数还是一系列整数(数组),所以 sizeof(p) 求得的是 p 这个指针变量本身所占用的字节数,而不是整个数组占...
使用for循环遍历数组: int main() { int arr[] = {1, 2, 3, 4, 5}; int length = sizeof(arr) / sizeof(arr[0]); // 计算数组长度 for (int i = 0; i < length; i++) { printf("%d ", arr[i]); } return 0; } 复制代码 使用指针遍历数组: int main() { int arr[] =...
上述代码中的p指向了int类型的数组元素a[0],所以p+1代表p的值加2。知道怎么获取其他元素的地址了,那么就可以利用指针p遍历数组元素了。 注意第10行的代码,*(p+i)代表根据p+i的值(其实就是第i个数组元素的地址)访问对应的存储空间,并取出存储的内容(也就是取出第i个数组元素的值),赋值给左边的value。
int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};int(*ptr)[4]=arr;// ptr 是一个指向整个一维数组的指针,注意类型和括号int second_element_in_first_row=*(*ptr+1);// 等价于 arr[0][1] 5.使用指针遍历数组 使用指针而不是下标遍历数组有时会更高效,因为指针运算可以减少一些数...
在C语言中,指针是一个强大且灵活的工具,特别适合用来高效地遍历数组。以下是使用指针遍历数组的几个关键步骤:1️⃣ 定义数组和指针变量。例如: ```c int arr = {1, 2, 3, 4, 5}; int *ptr; ```2️⃣ 让指针指向数组的首元素。你可以这样写: ...
2.接下来我们用指针来遍历数组元素 先定义一个指针,指向数组的第一个元素 // 定义一个int类型的数组 int a[4] = {1, 2, 3, 4}; // 定义一个int类型的指针,并指向数组的第0个元素 int *p = a; 1. 2. 3. 4. 5. p的值是a[0]的地址,因此,现在我们利用指针p只能访问数组的第0个元素a[0]...