(1)输入输出函数 --- getchar()与putchar()
问题:想要用getchar输入97,对应putchar输出ascll码表的[,但是结果输出的是9。
解释:getchar是从终端获取一个字符,putchar是从键盘获取一个字符,putchar可以自动把数值对应的ascll码值翻译出来,但是getchar在上述情况,是获取的97中的第一个字符9,会默认加一个‘’,将其变成‘9’,而不会翻译为ascll表对应的9的值。
对比:以下因为填写的就是97这一个整数,所有就会输出他的ascll值 ---> a。
(2)自增自减
int a = 10;
printf("%d %d %d %d %d
%d\n",a,a++,++a,a++,++a,a);
//14 13 14 11 14 14
后缀
a
++
的结果为当时的结果,
++
a
和
a
的结果为最终结果。
(3)关于char的字符与整数
注:char a有两种表示,一种可以表示一个字符,一种可以表示一个数字。
eg:
扩展:根据ascll表,可以实习’1‘-’9‘的字符转为1-9整数形式。
用字符9-字符0 ---> 用‘9’的ascll值 - ‘0’的ascll值 = 39 - 30 = 9
注:字符相减,会自动转换为ascll值相减。
Eg:
总结:0-9任何一个字符减去0这个字符,就可以得到他对应的整数型。
因为:char a有两种表示,一种可以表示一个字符,一种可以表示一个数字;字符之间做运算,会转化为ascll做运算。
(4)关于数组名与指针在什么时候可以++
数组名不可以++,指针可以自己++
eg:
编一个函数 fun(int *a,int n,int *odd,int *even) ,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数:利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和7 #include <stdio.h> 8 int fun(int *a,int n,int *odd,int *even); 9 10 int main(int argc, char *argv[]) 11 { 12 int arr[]={1,2,3,4,5,6,7,8}; 13 int ood = 0; 14 int even = 0; 15 fun(arr,8,&ood,&even); 16 printf("ood = %d,even = %d",ood,even); 17 return 0; 18 } 19 20 int fun(int *a,int n,int *odd,int *even){ 21 int flag = 0; 22 for(int i = 0;i<n;i++){ 23 if(*a%2 == 0){ 24 *odd += *a; 25 } 26 a++; 27 flag++; 28 } 29 30 puts(""); 31 a -= flag;//fu yuan 32 for(int i = 0;i<n;i++){ 33 if(*a%2 !=0){ 34 *even += *a; 35 } 36 a++; 37 } 38 39 }
第20行的i完整写法:int*a = arr,是把arr首地址赋值给指针变量a,因为a是指针变量所以a可以实现a++。但是arr数组名没发实现arr++。