C 语言小知识点
1.自增运算符与自减运算符:
(a) b=a++ —— 先赋值后运算 (自增);
(b) b=a- - —— 先赋值后运算(自减);
· (c) b=++a —— 先运算(自增)后赋值;
(d) b=--a —— 先运算(自减)后赋值;
大家可以运行下这个程序,看是什么结果:
main()
{
int i=10;
i=i-- - --i*(i=-3)*i++ + ++i;
printf("i=%d\n",i);
}
2.当用户本想输入两个数据,而只输入了一个数据就跳过了:
用户一般输入数据为scanf();而使用scanf()后应有一个良好的习惯,那就是清空缓存区,
清空缓存区就可以避免输入了一个数据却跳过了下一个要输入的数据。
清空缓存区:getchar(),fflush(stdin),flushall();
例如
int a;
scanf("%d",&a);
getchar();
//fflush(stdin);
//flushall();
3. 交换a,b的值
(a) t=a;
a=b;
b=t;
(b) a=a+b;
b=a-b;
a=a-b;
(c) (位异或)
a=a^=b^=a;
b=a^=b;
5.三目运算符比较大小
max=(a>b)?a:b
6. 数组与指针使用时要先定义,然后初始化
7.数组算法题(不考虑逻辑题)无非也就是数组元素的插入与删除,学习时应好好掌握这两点。
8. 字符串长度计算(sizeof,strlen)
void func(char *a)
{
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
}
int main(void)
{
char a[]="Hello World";
func(a);
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
return 0;
}
这个程序的运行结果是4,11,12,11.
首先4的由来是sizeof(a),此时a为指针变量,指针存的是地址,地址为int型的,所以不管什么类型的指针(float,char)
长度都为sizeof(int);
strlen(a)是计算字符串长度的函数,为10。
至于12的由来是sizeof(a),这里a是字符数组”Hello World“字符串末尾系统会自动加上‘\0’,所以sizeof(a)为12.
9.使用链表时应注意这几个问题:
类型:该链表是单链表还是双链表还是其他。
开头:该链表是否有头结点;
结尾:链表结尾是否让其=NULL;(读取好读)