2022125

2022125,第1张

2022/1/25

数组:由若干个相同类型的相关数据项按顺序存 储在一起,构成数组(array) ;数组实际上 是同种类型、有序的数据的集合。

数组名:如果用一个统一的名字标识这组数据, 那么这个名字就称为数组名

数组元素:构成数组的每一个数据项称为数组的 元素(element)

格式:类型 数组名[下标1][下标2] ……[下标n];

其中:类型为数组元素的基类型,即每个 元素的类型。下标值n表示为所在维的数组 元素个数,该维的数组下标的上界是n-1; C语言中数组下标下界始终为0。维数是 下标的个数。

一维数组的定义:类型 数组名[常数表达式];

例如:

int a[10]; //各元素都为整形。

定义一个包括10个整形元素的一维数组。 元素为:a[0]、a[1]、a[2] ……a[9]

C规定只能逐个引用数组元素, 而不能一次引用整个数组。

当数组被说明为静态(static)存储类型或外部存储类型(即在所有函数外部定义)时,则在不显式给出初值的情况下,数组元素将在程序编译阶段自动初始化为0。 static int a[4] 等价于 static int a[4]={0,0,0,0}

二维数组格式:类型 数组名[常数表达式1] [常数表达式2] ;

int  a[3][4];                可看成3行*4列矩阵

二维数组的排列顺序:

 

 

如果对全部元素赋初值(即提供全部初 始数据),则定义数据时对第一维长度可 以不指定,但第二维长度不能省。

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于     int a[  ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 

今日代码演示:

#include
#define N 10
int main()
{
    int i,j;
    int k=1;
    int a[10][10];
    for (int x = 0; x <=(N/2); x++)
    {
         for ( i = x; i < N-x; i++)
        {
        for ( j = x; j < N-x; j++)
        {
            a[i][j]=k;
        }
        }
    k++;
   
    }
    for ( i = 0; i < N; i++)
    {
        for ( j = 0; j < N; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("n");
        
    }

    
    
    
}

运行结果:

 

数组名作为函数参数

传递方式:属于赋地址调用,将实参数组首地址 传给虚参,虚参也是一数组名

虚参要求:必须是数组名

实参要求:可为另一数组名。

哑实结合:哑实数组具有相同的首地址,即哑实 数组第一个元素占用同一存储单元, 以后各元素按顺序一一结合。

 形参不可改变地址值。

若在被调函数中改变形参数组的元素值, 则实参数组中的元素值也会随之发生改变。 注意这种改变不是形参传给实参造成的(C 语言不允许这种反向的值传递),而是由于 形参和实参两个数组在内存中因指向同一地 址而共享同一段内存造成的。

 

选择D,以为每次都重新覆盖原值。

字符数组的定义:

 

 

 

字符数组可以整体 *** 作 .但必须用特殊的函数static int a[]

数组名作形参的时候不会被视作数组而是指针
分配的不是数组空间是地址空间

数组作函数参数,只传首地址,不会传递数组大小

实参赋予给形参,形参不会影响实参,虚实结合的时候仅仅是把实参赋值给形参

被调函数中,形参数组的大小n实际上不起任何作用,只将实参的首地址传递给形参数组

形参数组是指针,形参和实参可以同名,但他们是两个不同的变量.函数空间不同,所以算不同变量


可改写为.不可以写成int  *a


有效字符串。字符数组可以多个结束标志,字符串一个结束标志

 字符串的输入:

 scanf输入当遇到第一个空格的时候就要d出

 指针的概念:

1. 什么是变量的地址?

        一个整数在32位系统中是占用4字节的,而返回的只是这4个字节的起始地址,它的全地址就是以这个地址开始的后面的4个字节. 而数组是相同类型的一组变量组成的,它们每个元素之间的地址是连续的 数组的名称本身就是表示这个数组的起始地址啦!再加上数组的类型的长度就是下一个元素的起始地址   

什么是变量的内容?

变量的存的值

2. 什么是直接寻址?

通过变量名寻址

    什么是间接寻址?

通过地址寻值

3. 取地址运算符&

去指针变量的地址

间接访问运算符*?

去地址里面的内容

为什么引入指针的概念

 

  指针变量的定义:

指针变量必须先定义,后使用。

 运算符*和++、--优先级等同,连续运算,采用右结合。下列各语句的含义如下: a=*p++      先运算p++,但为后增运算,因而先将*p的值赋给a,然后p加1。 a=(*p)++    先取*p的值,赋给a。然后将p所指向的变量内容加1。 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5714175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存