指针与一维数组练习题01

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

double  source [5]={1.1,  2.2,  3.3,  4.4,  5.5};

double  targetl[5];

double  target2 [5];

copy_arr (source, target1, 5);

copy_ptr (source, target1,5);

 1 #include <stdio.h>
 2
 3 void copy_arr(double s[],double tar[],int c);
 4 void copy_ptr(double *s,double *tar,int c);
 5
 6 int main(void){
 7     double s[5]={1.1, 2.2, 3.3, 4.4, 5.5};
 8     double t1[5],t2[5];
 9     copy_arr(s,t1,5);
10     copy_ptr(s,t2,5);
11     int i;
12     printf("t1\t\tt2\n");
13     for(i=0;i<5;i++)
14     {
15         printf("t1[%d]=%.1f\t",i,t1[i]);
16         printf("t2[%d]=%.1f\n",i,t2[i]);
17     }
18     return 0;
19 }
20
21 void copy_arr(double s[],double tar[],int c){
22     int i;
23     for(i=0;i<c;i++){
24         tar[i]=s[i];
25     }
26 }
27
28 void copy_ptr(double *s,double *tar,int c){
29     int i;
30     for(i=0;i<c;i++){
31         *(tar+i)=*(s+i);
32     }
33 }

在函数定义部分也可以使用增量运算符:

1 void copy_arr(double s[],double tar[],int c){
2     int i=0;
3     while(i<c)tar[i]=s[i++];
4 }
5
6 void copy_ptr(double *s,double *tar,int c){
7     int i=0;
8     while(i<c)*(tar+i)=*(s+i++);
9 }
时间: 2024-10-11 16:00:03

指针与一维数组练习题01的相关文章

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当为数组,所

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

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

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.内