练习题(1)

Suzhou
• 阅读 143

练习题(1) 上述选项中,return只能返回一个数字。 练习题(1) 函数可以嵌套调用,不可以嵌套定义。 练习题(1) 实参和形参可以相同。 练习题(1) 函数可以先声明再使用,定义可以放在后面。 函数定义是说明函数怎么实现的。 练习题(1) 传值调用时形参不能操作实参,传址调用时形参可以操作实参。 练习题(1) 两个括号内的内容是逗号表达式,结果分别是v2和v4,加上后面的v5、v6一共4个实参。 练习题(1) 高内聚低耦合是判断软件设计好坏的标准。 函数中尽可能少的使用全局变量,以免代码修改混乱失控。 函数参数过多时传参时可读性差,尽量不要超过4~5个。 函数中资源谁申请谁释放,避免资源浪费。 ::: tip 内聚性又称块内联系。 指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。(可以理解为模块独立性强,可以独立完成一个功能) 耦合性也称块间联系。 指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。(可以理解为模块之间可以相互调用,但不会有功能上的交叉) ::: 练习题(1) 函数可以没有返回值(void)。 函数参数可以是数组等。 库函数是封装好的使用include调用的,和自定义函数没有关系。 练习题(1) 函数放在哪里调用都可以。 练习题(1) 定义在函数内部的变量是局部变量,作用范围只在该函数内部。 栈上保存的是局部变量。 函数内复合语句中定义的变量只在这个复合语句内有效。 如下: 练习题(1) 练习题(1) A是不完全初始化;B可以不指定大小;C不能使用小括号;D初始化了一个元素。 练习题(1) 二维数组不能省略列,只能省略行。 C在初始化时,实际初始化了3行,但是在定义时只定义了2行。 D中初始化行时写了两个逗号,不符合规则。 练习题(1) C中a[10]越界。数组中元素赋值时可以使用语句赋值运算结果。 练习题(1) 两行三列的数组中,第四个数字应该在第二行第一列,放在数组中应该是a[1][0]。 练习题(1) 题目中的数组里,括号内是一个数组表达式,运算结果是4,即arr[]={1,2,4,5}。数组arr中有4个int类型的元素,大小为4*4=16字节。 练习题(1) 求数组大小sizeof需要包含数组中的\0,求字符串长度strlen计算到\0为止。 ::: warning 两种数组写法对sizeof结果的影响: 在数组中放进一串元素: 练习题(1) 在数组中放进一个字符串: 练习题(1) ::: 练习题(1) 练习题(1) 随着数组下标的有小变大,地址是由低到高的。 练习题(1)

#include <stdio.h>

void Init(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        arr[i] = 0;
    }
}

void Print(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%d", arr[i]);
    }
}

void Reverse(int arr[], int sz)
{
    int tmp = 0;
    int left = 0;
    int right = sz - 1;
    while (left <= right)
    {
        tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left++;
        right--;
    }
}

int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    //Init(arr, sz);
    Print(arr, sz);
    Reverse(arr, sz);
    printf("\n");
    Print(arr, sz);
    return 0;
}
12345678910
10987654321

练习题(1) ::: warning 数组名是首元素的地址,数组的交换不能通过引入第三个数组进行直接交换。 ::: 1.使用一个变量进行交换: 练习题(1) 2.使用一个第三方数组交换: 练习题(1) ::: tip 上述引入一个第三方数组交换中,arr数组的大小在定义时需要指定,数组创建时不能使用变量指定大小。 ::: 练习题(1) 上述代码是错误的,在不同的编译器中得到的结果不同。 练习题(1) 整型在64位系统中是4个字节。 练习题(1) 上述代码中将arr数组的首元素地址强制类型转换成short* 交给指针p,p每+-1,移动两个字节。第一个for循环中,循环4次,p从0开始每次+1然后解引用,即每次改变两个字节指向的位置的值,p+0和p+1解引用后值改为0,即将数组arr中第一个元素的四个字节分两次置为0,即arr[0]的值被置为0,arr[1]同上。 第一个for循环完成后,第二个for循环打印数组中元素。arr[0]和arr[1]被置为0,其余元素未被操作,所以打印出来值为0 0 3 4 5。 练习题(1) 变量a中存放着11 22 33 44一共4个字节(在内存中的存储顺序是44 33 22 11)a的地址交给pc,pc的类型是char**pc=0指的是将a在内存中的第一个字节置为0,即00 33 22 11,打印出来的顺序是11 22 33 00。 练习题(1) ::: warning 全局变量不初始化默认为0。 局部变量不初始化默认为随机值。

sizeof返回的值是一个无符号数。 ::: 上述代码中,sizeof计算变量/类型所占大小,计算结果恒>=0,返回的是一个无符号数,负数在和无符号数进行比较时,会先将-1转换为无符号数。负数转变为无符号数时,最高位的1就不是符号位而是有效位了,这个数字就会变为一个很大的数,一定会比sizeof(i)大。

评论区
推荐文章

暂无数据

Suzhou
Suzhou
Lv1
这个网站设计堪称垃圾。CTRL+S过后的东西,重启电脑只能保存5行。多按几次CTRL+S还提示频繁保存不了。吐了。
9
文章
0
粉丝
0
获赞