您的位置:首页 > 其它

牛客网刷题总结

2016-04-24 11:45 260 查看
近期在牛客网刷了一些题,总结了一些容易犯的错误,现在来一一列举出来。

1.要清楚什么是传递地址,什么事传递值。

2.输出“%s”时,遇到‘\0’就会停止,

3.对于左对齐要加-, %-30.4f, printf函数打印一个double类型的数据,要求:输出为10进制,输出左对齐30个字符,4位精度。

4. ||逻辑运算符只要前面为真,后面就不用再进行判断了。

设x、y、t均为int型变量,则执行语句:t=3; x=y=2; t=x++||++y; 后,变量t和y的值分别为__。答案就是t=1,y=2,x=3。

5.二进制方式打开一个文件的方法是:

FILE *f = fopen( "test.bin", "wb" );


6.

main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}


在这里面问题,就是&a+1这个就是指向整个数组下一个位置,

*(a+1)就是数组的第二个元素,

*(ptr-1)就是整个数组再向后偏移4个字节,刚好指向数组的第5个元素,所以输出的结果刚好是2,5。

7.当free释放内存之后,指针还指向原来的那块地址,需要我们设置 p = NULL;如果不手动设置 p = NULL,此时P就变成了野指针

8.若有以下程序段

char str[4][12]={"aa", "bbb", "cccc", "d"},*strp[4];
int i;
for(i=0;i<4;i++)
strp[i]=str[i];


不能正确引用字符串的选项是

str[0]

strp

strp[3]

* strp

在这里strp代表数组 strp[4]的首地址,这个数组存储的值是指向每个字符串的指针,*strp=strp[0]。

9.转移字符分三种,一般转义字符,八进制转移字符和十六进制转移字符

一般转义字符,如‘\b’,由两个字符表示,其实代表一个字符,这个代表退格字符

八进制转义字符,如‘\007’,三位数字是八进制的,ASCII码为7的表示响铃

十六进制,如’\xfe’,同样后面数字是所表示意思的Ascii码的十六进制表示,注意一定要有x,大小写都行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: