C艺术篇 3-1 指针与一维数组(1)

我们先来看指针与一维数组的关系,例题如下:

从输出结果得知,arr是数组名,它是指针常量,而ptr是指针变量。

arr表示此数组第一个元素的地址,即arr等同于&arr[0]。

arr可以使用指针变量的*表示符号,如*arr等同于arr[0],*(arr+1)等同于arr[1],依次类推。

在2-1中介绍过

int *ptr = &x;

其实是下列两条语句的组合

int *ptr;

ptr = &x;

可以理解为 ptr就是地址,当本题将数组地址给ptr时候, 把ptr当为数组,所以ptr[i]表示的是值,而ptr+i表示的是地址。

同理ptr也可以使用指针变量的[]表示符号,如目前ptr所指向变量地址的值为ptr[0],其等同于*ptr,而ptr[1],等同于*(ptr+1),依次类推。

再来看范例:

从输出结果得知,pi+1;只是将目前的pi往下移到下一个元素的地址,它并没有覆盖pi。

而pi++;不仅将目前的pi移到下一个元素的地址,而且还将此新值覆盖pi/我们可以对指针变量pi做++的动作,但是不可以对数组名i做++的动作。

当指针、自增(++)运算符或自减(--)运算符,及*这三个运算符在同一语句时,要注意++的作用点在哪里。

原文地址:https://www.cnblogs.com/Hh-blog/p/10013903.html

时间: 2024-08-01 22:19:42

C艺术篇 3-1 指针与一维数组(1)的相关文章

指针与一维数组和二维数组以及字符串指针数组的学习笔记

废话不多少,直接上代码,关键的东西已经注释了,看注释信息理解即可. 说明:本程序讨论了一维数组和指针的关系,谈论了二维数组和指针之间的关系,讨论了字符串数组指针数组和指针之间的关系,代码中以给出定义的方法和简单的使用,但是有些使用方法并没有列出,如果需要, 请自行加入printf调试即可. 转贴请注明出处,欢迎和我讨论,谢谢. ----------cofin_add #include <stdio.h> void fun(int m, char *((*p)[m])){ int i = 0;

指针与一维数组练习题01

编写一个程序,初始化一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明).制作第一份拷贝的函数使用数组符号.制作第二份拷贝的函数使用指针符号,并使用指针的增量操作.把目标数组名和要复制的元素数目做为参数传递给函数.也就是说,如果给定了下列声明,函数调用应该如下面所示: double  source [5]={1.1,  2.2,  3.3,  4.4,  5.5}; double  targetl[5]; double  target2 [5]; copy_ar

C++ 指针与一维数组

在上一章中, 已经谈到普通指针 (C风格) 的基础概念, 现在来介绍一下 数组与指针的联系 比如说我们现在声明一个数组: #include <iostream> using namespace std; int main() { int num[3]; return 0; } 这个num在内存中的状态是这样的: 一看一目了然! num完全就是指针! 也就是说, 数组就是指针 (指针不一定是数组, 不懂的看这里) 我们原来输入输出num是这个样子的: #include <iostream&

指针和一维数组-复习

# include<stdio.h> void f(int* parr,int len)//二个参数确定一个数组,第一:数组第一个元素的地址:parr,第 二:数组的长度:len { int i; for(i=0; i<len; ++i) { printf("%d ",*(parr + i));//*(parr + i)等价于parr[i] } } int main(void) { int a[5] = {1, 2, 3, 4, 5}; printf("%d

【C语言】12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

学习笔记之12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

【C语言】指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8

【C语言】-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的

指针知识梳理2-指针与一维数组

一.一维数组复习 数组的本质是连续的内存,我们可以通过一下代码验证. int main() { int a[10]; int i; for(i = 0;i<10;i++) { printf("%p\n",&a[i]); } } 打印出每个元素的地址,会发现地址间隔是4 ,这个间隔刚好等于sizeof(int). 那么如果知道了a[0]的地址,我们就可以通过地址的加减算出a[i]的地址,然后访问a[i]; 二.通过指针访问一维数组 指针能够访问一维数组的两个前提是: 1.内