`

C语言之数组和结构体参数

阅读更多

数组Array

结构体Struct

 

 

学习C语言,基本类型(Primitive Type)看完了就差不多到 数组和结构体来。

作为C语言中最基本最常见的复合类型(Compound Type),两者作为参数传递时所完全不一样的。

 

数组的名字本来就是指针,所以方法里面修改数组元素能影响传递进来的数组。两者地址也一样。

结构体传进方法时,是复制的一个副本。两者地址不一样。

 

#include <stdio.h>
void changeArray(int x[])
{
	x[0] =  900;
	x[1] =  800;

printf("array address in method=%d\n",x);
}

int main(void)
{
	int arr[2] ;
	arr[0] =  0;
	arr[1] =  0;
printf("arr[0] before =%d\n",arr[0]);
printf("arr[1] before=%d\n",arr[1]);
	changeArray(arr);

printf("\n------------------------------------");
printf("\n");
printf("arr[0] after=%d\n",arr[0]);
printf("arr[1] after=%d\n",arr[1]);

printf("array address after=%d\n",arr);
return 0;

}
 
depeng@depeng-ubuntu:~/c$ ./Array
arr[0] before =0
arr[1] before=0
array address in method=-1077467192
------------------------------------
arr[0] after=900
arr[1] after=800
array address after=-1077467192

 

 

#include <stdio.h>

struct complex_struct { double x, y; };

void changeStruct(struct complex_struct  s){
   s.x=900;
   s.y=800;
 printf("\n");
   printf("\n--------<in method>----------------------------");
   printf("\n");
   printf("s  in method=%d\n", s); 
   printf("&s  in method=%d\n", &s); 
   printf("\n--------</in method>----------------------------");

}

int main(void)
{
	struct complex_struct  z;
	z.x = 0.0;
	z.y = 0.0;
 printf("\n");
   printf("\n----------<before>--------------------------");
   printf("\n");
   printf("z=%f     %f\n", z.x, z.y);
   printf("z before=%d\n", z); 
   printf("&z  before=%d\n", &z); 
   printf("\n------------</before>------------------------");

       changeStruct(z);
 printf("\n");
   printf("\n------------</after>------------------------");
printf("\n");
   printf("z=%f     %f\n", z.x, z.y);
   printf("z  after=%d\n", z); 
   printf("&z  after=%d\n", &z); 
   printf("\n------------</after>------------------------");
   printf("\n");
	return 0;
}

 

----------<before>--------------------------
z=0.000000     0.000000
z before=0
&z  before=-1076121216

------------</before>------------------------

--------<in method>----------------------------
s  in method=0
&s  in method=-1076121248

--------</in method>----------------------------

------------</after>------------------------
z=0.000000     0.000000
z  after=0
&z  after=-1076121216

------------</after>------------------------

 



 

 

 

  • 大小: 1.2 MB
分享到:
评论

相关推荐

    C语言课程 数组 指针 结构体

    本课程聚焦于C语言中的核心概念,包括数组、指针和结构体,这些都是理解和编写C程序的关键。 首先,让我们深入探讨数组。数组是C语言中存储多个相同类型数据的一种方式。你可以将其想象为一个连续的内存空间,每个...

    C语言实例循环嵌套数组指针函数结构体

    在C语言编程中,循环、嵌套、数组、指针、函数和结构体是核心概念,它们构成了C语言的强大功能和灵活性。以下是对这些概念的详细解释和实践应用。 一、循环 C语言中的循环主要有三种类型:for循环、while循环和do-...

    c语言之语法代码集,文件操作 数组 指针 结构体 共同体

    本资源包“c语言之语法代码集”聚焦于C语言的核心语法元素,包括文件操作、数组、指针、结构体和共同体,这些都是C语言编程的基础和核心。 1. **文件操作**:在C语言中,文件操作是通过标准库函数如`fopen`, `...

    C语言全套资料 C语言程序设计 C语言算法 C语言课件 C语言顺序程序设计,C语言数组,C语言循环控制,C语言预处理命令,C语言文件操作指针,C语言选择结构程序设计,C语言结构体与共用体,C语言文件操作,C语言函数

    5. **C语言数组**:数组是存储同一类型数据集合的结构,学习者会学习如何声明、初始化和操作数组,以及一维、二维数组的应用。 6. **C语言循环控制**:循环是重复执行一段代码直到满足特定条件的过程。学习者会接触...

    使用Python向C语言的链接库传递数组、结构体、指针类型的数据

    想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte、short、int、double之类的,但是在使用数组类型的时候,我们也是有着类似的做法,下面我们

    C语言 2道关于结构体的题 源代码

    这时,需要注意的是,如果函数内部修改了结构体参数,实际上是修改了原始结构体的副本,除非使用指针参数。例如: ```c void update_student(struct student *s) { s-&gt;age++; s-&gt;score += 5.0; } ``` 在这个例子中...

    学生成绩管理程序-结构体数组法.rar

    综上所述,这个C语言作业通过结构体数组法实现了学生成绩的管理和操作,展示了结构体在数据组织和处理上的强大功能。通过对结构体的定义、数组的使用以及对数组元素的操作,我们可以方便地管理大量学生数据,提供...

    c语言实验报告-结构体程序设计

    通过这个实验报告,我们可以深入理解C语言中结构体的使用,包括如何定义结构体类型、初始化结构体数组、使用结构体指针以及在函数中传递结构体等重要概念。同时,也涉及到了实际问题的解决,如日期计算和数据排序,...

    C语言的指针和结构体ppt课件.ppt

    C语言中的指针和结构体ppt课件 指针是C语言中的一种基本数据类型,它是一种特殊的变量,用于存储其他变量的地址。指针变量的类型和它所指向的变量的类型相同。 1. 指针的概念 在C语言中,指针是一种变量,它存储...

    计算机二级C语言上机考试之结构体与链表.pdf

    计算机二级C语言上机考试之结构体与链表.pdf 本资源主要涉及到结构体和链表两方面的知识点,通过9个函数编写任务,涵盖了结构体和链表的定义、操作和应用。 结构体相关知识点 1. 结构体的定义和初始化:在C语言中...

    C语言 结构体范例代码

    综上所述,C语言的结构体是一个强大的工具,用于组织和管理复杂的数据。通过熟练运用结构体,可以创建出各种复杂的程序设计,如链表、树、图等数据结构,以及实现面向对象编程的一些特性。在实际编程中,理解并掌握...

    C语言学习资料 C 数组 内存使用 结构体等

    本学习资料主要涵盖了C语言中的数组、内存管理和结构体等核心概念,适合C语言的初学者和进阶者。下面将详细阐述这些知识点。 首先,我们来探讨C语言中的数组。数组是C语言中存储相同类型数据的集合,可以是一维、二...

    C语言语法大全-结构体

    这意味着结构体的实际大小可能大于各成员大小之和。例如,如果系统默认的字节对齐是4字节,那么包含一个`int`和两个`char`的结构体大小可能是8字节,而不是5字节。 综上所述,C语言的结构体提供了强大的数据组合...

    ☆c语言实验十(结构体、共同体).doc

    总结来说,这个C语言实验涵盖了结构体的使用、数制转换、闰年判断以及指针和数组的操作,这些都是C语言编程中的基础且重要的知识点。通过完成这些题目,学生可以加深对C语言复合数据类型、字符串处理、循环、条件...

    C语言的指针使用与结构体的使用

    其中,指针和结构体是C语言的两个核心概念,对于理解和编写高效的C程序至关重要。本篇将深入探讨这两个主题,帮助你掌握在实际编程中如何有效地利用它们。 首先,让我们来看看“指针”。在C语言中,指针是一个变量...

    C语言变长数组之剖析

    在使用变长数组时,需要特别注意其内存分配和释放的特性,以及在函数参数传递中的行为。由于数组的大小在运行时确定,这意味着传递变长数组给函数时,需要考虑内存分配和管理的责任划分。在某些情况下,可能需要通过...

    C语言全套视频教程 视频.txt

    31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之...

    C语言利用结构体数组实现学生成绩管理系统

    用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。 (4) 按每个...

    C语言中数组作为函数的参数以及返回值的使用简单入门

    如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式,可以使用多维数组形式...

    自学去c语言视频教程

    31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之...

Global site tag (gtag.js) - Google Analytics