【C语言】作业选择题总结

 函数传值引用时形参是使用实参的拷贝,在函数中对形参进行操作不会改变实参的值,如果想要改变实参的值,则需要传址引用,然后通过解引用访问实参。

此外当全局变量和局部变量名字重合时,局部变量优先。

 回忆一下两个进制转义字符的含义:

\ddd 三个八进制数字 \xhh 两个十六进制数字 

然后可以看看这道题。

下列是指针变量的事(多选) 

要记住#define 的定义是“替换”,而typedef是类型改名。

那么第三行就是  int* a,b;    第四行就是int*c,int *d; 因此a,c,d是指针;

这道题答案是8,如果能做对那么我相信你对于 替换 应该已经理解得很深刻了。 

在这里,c和&c的值相同,因此效果相同,但是b必须取地址。

 

 静态局部变量在函数结束时并不会销毁,生命周期比函数长,但作用域仍然是在函数里面

const 和 * 的左右关系:左定值,右定向。意思就是说如果const在*左边,那么指针指向的变量的值不能通过指针改变,如果在右边,那么指针的指向是不可改变的。

提示:f既定值又定向。

B:double类型是浮点型,会有误差,判断其是否为零通常是判断是否小于某个精确度的很小的值

C:左边可以正常初始化,对于右边,在声明了char a[14]之后,a代表首元素的地址,是一个常量,不能修改。

通常数组名的值都是首元素地址,除了两种特殊情况: 

1.sizeof(数组名),此时结果是整个数组的字节数。如果是作为参数传给函数的话那么只是一个指针变量。

2.取地址&后加数组名,可以验证,如果定义arr[10],&arr[0]+1与&arr[0]相差4个字节;而&arr+1与&arr相差40个字节。

A:没有考虑内存对齐。

结构体的大小计算遵循结构体的对齐规则:

1.第一个成员在与结构体变量偏移量为0的地址处。(即结构体的首地址处,即对齐到0处)
2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
3.结构体的总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。
4.如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

对齐数 = 该结构体成员变量自身的大小与编译器默认的一个对齐数的较小值。
注:VS中的默认对齐数为8,不是所有编译器都有默认对齐数,当编译器没有默认对齐数的时候,成员变量的大小就是该成员的对齐数。

 以上截图来源于CSDN博主「2021dragon」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenlong_cxy/article/details/114332324

 这道题考察循环语句的控制变量在其他地方被改变造成的影响。

 先算a-=a*a;再算a+=左边算出来的值,。

n+(n-1)+...+1=n*(n+1)/2

 printf的返回值是它打印字符的个数,在此为1,而‘0’也不是0,因此这俩等价(都为真)

 

考察对ASCII表的熟悉,一些常见的:A 65,a 97,‘0’ 48 

 跳出多层循环的几个方法

这里||的优先级更高,循环判断条件是(i||i++)<5.打死你||有一个特性:在左边表达式为真的时候会不执行右边的程序

函数不写返回值类型默认为int

 注意这个print是自定义的函数。

一维数组定义时必须写长度,C中如果换成‘0’就是48,那么可以,另外此处不考虑变长数组

a[x]就是*(a+x),x[a]和a[x]一样,那么X[i][j]就是*(X[i]+j)那就是*(*(X+i)+j).B选项中,[]的优先级高于*,因此B和**(X+i+j)等价

十六进制运算,X[9][9]-X[4][4]是5n+5;X[9][9]-X[7][7]是3n+3 

 有符号位数右移是补符号位的

比如下面这道题 

数据类型转换

从高到低的顺序:char int long float double

特别地,int 与 unsigned int 比较大小的时候,int 会转换成 unsigned int.因此当int为负数(符号位为1时)需要特别注意这个是一个很大的数

 在判断时不能用连续的大于或者小于号在这里‘0’<=c不成立,为0,然后再判断0<='9,成立,因此是打印YES

 x赋值给y时会整型提升为int,高位补0,因此选b

 

unsigned char 数据类型范围是0-255,因此是死循环

int fun(char *s)

{

        char *t=s;

        while(*t++);

        return t-s;

}

//输出什么?是strlen还是sizeof?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值