数组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语言中的循环主要有三种类型:for循环、while循环和do-...
本资源包“c语言之语法代码集”聚焦于C语言的核心语法元素,包括文件操作、数组、指针、结构体和共同体,这些都是C语言编程的基础和核心。 1. **文件操作**:在C语言中,文件操作是通过标准库函数如`fopen`, `...
5. **C语言数组**:数组是存储同一类型数据集合的结构,学习者会学习如何声明、初始化和操作数组,以及一维、二维数组的应用。 6. **C语言循环控制**:循环是重复执行一段代码直到满足特定条件的过程。学习者会接触...
想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte、short、int、double之类的,但是在使用数组类型的时候,我们也是有着类似的做法,下面我们
这时,需要注意的是,如果函数内部修改了结构体参数,实际上是修改了原始结构体的副本,除非使用指针参数。例如: ```c void update_student(struct student *s) { s->age++; s->score += 5.0; } ``` 在这个例子中...
综上所述,这个C语言作业通过结构体数组法实现了学生成绩的管理和操作,展示了结构体在数据组织和处理上的强大功能。通过对结构体的定义、数组的使用以及对数组元素的操作,我们可以方便地管理大量学生数据,提供...
通过这个实验报告,我们可以深入理解C语言中结构体的使用,包括如何定义结构体类型、初始化结构体数组、使用结构体指针以及在函数中传递结构体等重要概念。同时,也涉及到了实际问题的解决,如日期计算和数据排序,...
C语言中的指针和结构体ppt课件 指针是C语言中的一种基本数据类型,它是一种特殊的变量,用于存储其他变量的地址。指针变量的类型和它所指向的变量的类型相同。 1. 指针的概念 在C语言中,指针是一种变量,它存储...
计算机二级C语言上机考试之结构体与链表.pdf 本资源主要涉及到结构体和链表两方面的知识点,通过9个函数编写任务,涵盖了结构体和链表的定义、操作和应用。 结构体相关知识点 1. 结构体的定义和初始化:在C语言中...
综上所述,C语言的结构体是一个强大的工具,用于组织和管理复杂的数据。通过熟练运用结构体,可以创建出各种复杂的程序设计,如链表、树、图等数据结构,以及实现面向对象编程的一些特性。在实际编程中,理解并掌握...
本学习资料主要涵盖了C语言中的数组、内存管理和结构体等核心概念,适合C语言的初学者和进阶者。下面将详细阐述这些知识点。 首先,我们来探讨C语言中的数组。数组是C语言中存储相同类型数据的集合,可以是一维、二...
这意味着结构体的实际大小可能大于各成员大小之和。例如,如果系统默认的字节对齐是4字节,那么包含一个`int`和两个`char`的结构体大小可能是8字节,而不是5字节。 综上所述,C语言的结构体提供了强大的数据组合...
总结来说,这个C语言实验涵盖了结构体的使用、数制转换、闰年判断以及指针和数组的操作,这些都是C语言编程中的基础且重要的知识点。通过完成这些题目,学生可以加深对C语言复合数据类型、字符串处理、循环、条件...
其中,指针和结构体是C语言的两个核心概念,对于理解和编写高效的C程序至关重要。本篇将深入探讨这两个主题,帮助你掌握在实际编程中如何有效地利用它们。 首先,让我们来看看“指针”。在C语言中,指针是一个变量...
在使用变长数组时,需要特别注意其内存分配和释放的特性,以及在函数参数传递中的行为。由于数组的大小在运行时确定,这意味着传递变长数组给函数时,需要考虑内存分配和管理的责任划分。在某些情况下,可能需要通过...
31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之...
用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。 (4) 按每个...
如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式,可以使用多维数组形式...
31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之...