牛客网刷题总结

近期在牛客网刷了一些题,总结了一些容易犯的错误,现在来一一列举出来。

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,大小写都行

你可能感兴趣的:(刷题)