- 博客(25)
- 收藏
- 关注
原创 C程序设计语言 p115,运算符的优先级
在所有运算符中,下面四个优先级最高,即 "." "->" "()" " []",他们同操作数的结合也最紧密。*p->str++:读取str指向的值后,str再自增。(P++)->len:先对len执行操作,再p自增。*p++->str:读取str指向的值后,p自增。(*p->str)++:将str指向的值自增。++p-> len:增加len的值,而非p。*p->str:读取str指向的值。
2023-05-28 14:59:51
72
原创 C程序设计语言 p105,一些复杂声明
char (*(*x[3])( ))[5] :x是一个指针数组,x[3]是一个指向函数的指针,函数的返回值是一个指针,该指针指向array[5],array[5]是char类型。char (*(*x( ))[ ])( ) :x是一个函数,其返回值是一个指针,该指针指向一个一维指针数组,指针数组里每一个指针,指向一个函数,函数是char类型。int (*daytab)[13] :daytab是一个指针,指array[13]void *comp( ) :comp是一个函数,其返回值是一个指针。
2023-05-27 18:31:07
61
原创 C程序语言设计 p96,二维数组作为参数传递给函数
f(daytab[2][13]) 或 f(day[][13]) 或 f((*daytab)[13]),注意,*daytab必须加上圆括号,因为中括号的优先级更高,加上圆括号才能表示这是一个指针,指向一个包含13个元素的一维数组,若不加圆括号,则表示这是一个有13个元素的一维数组。如果将二维数组作为参数传递给函数,则在函数的参数声明中必须指明数组的列数。
2023-05-25 16:17:04
67
原创 C程序设计语言 p95,练习5-7
重写函数readlines,将输入的文本行存储到由main函数提供的一个数组中,而不是存储到调用alloc分配的存储空间中。
2023-05-25 15:55:54
76
原创 C程序设计语言 p89,指针的算术运算的四种合法情况
2⃣️指针同整数之间的加法或减法运算,如 p += n,表示让p指向后面第n个元素。注意,n将根据p指针的类型进行缩放,如p是int型,则n要按4倍来计算。3⃣️同一个数组之间不同指针的比较运算或减法运算,如p,q都是指向a[ ]中元素的指针,则p,q可以进行比较或减法运算,注意加法可能会超出数组的最大界限。4⃣️可将指针赋值为0或将指针与0比较,指针和整数之间不能进行比较,但0是例外,c语言中 0永远不是有效的地址,故可用指针为0表示特殊情况。1⃣️同类型指针的赋值运算,如 int *p,*q;
2023-05-25 13:02:14
125
原创 C程序设计语言 p83,练习5-1
5-1 在上面的例子中,如果符号+或-的后面紧跟的不是数字,getint函数将把符号视为数字0的有效表达方式。修改该函数,将这种形式的+或-号重新写回到输入流中。
2023-05-25 11:48:49
46
原创 C程序设计语言 p80,一元运算符*&优先级
ip += 1 等同于 ++*ip 等同于(*ip)++;注意,(*ip)++的圆括号不能去除,否则是ip的值自增,因为*、++这样的一元运算符都是从右至左书序结合的。
2023-05-24 18:14:15
133
原创 C程序设计语言 p58,4.1函数基本知识
注意,getline函数用于保存每行字符,并返回行长;strindex函数用于匹配字符段,并返回t在s中的位置i。编写一个程序,将输入中包含特定字符串的各行打印出来,并返回行数。
2023-05-12 18:56:50
37
原创 C程序设计语言 p52,练习3-3
编写函数 expand(s1, s2),将字符串 s1 中类似于 a-z 一类的速记符号在字符串 s2 中扩展为等价的完整列表 abc…该函数可以处理大小写字母和数字,并可以处理 a-b-c、a-z0-9 与-a-z 等类似的情况。作为前导和尾随的-字符原样排印。注意,在s2字符串中,扩展成完整列表时利用字符C的自增完成,更为简洁。
2023-05-11 15:53:25
60
原创 C程序设计语言 p40,练习2-6、2-7
练习2-7: 编写一个函数invert(x,p,n),该函数返回对x执行下列操作后的结果值,将x中从第p位开始的n个(二进制)位求反(即,1变成0,0变成1),x的其余各位保持不变。练习2-6:编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(注意:若用0去异或,则得其本身,因为0和0异或得0,0和1异或得1。)位设置为y中最右边n位的值,x的其余各位保持不变。
2023-05-10 15:57:15
58
原创 C程序设计语言 p39,位运算综合
getbits(x,p,n)返回从右边第p位开始向右数n位的字段,例如getbits(x,4,3)返回x中第4、3、2位字段。最后进行按位与运算,即 0000 1100 & 0000 0111 得结果 0000 0100,则返回字段是100,符合要求。①、x >> (p=1-n)表示将x左移,使希望获得的字段位于x的最右端,即 x = 0000 1100。②、~0
2023-05-09 19:01:07
59
原创 C程序设计语言 p39,区分位运算符& | 和逻辑运算符&& ||
该代码将x中对应于SET_ON为1的位置的二进制位置1。如x = 0001 SET_ON= 0110 则运行完后 x = 0111。2、表示 按位与(AND)运算,即当x = 1,y = 2 时,x & y = 0。1、当x = 1,y = 2 时,x && y = 1。1、当x = 0,y = 1 时,x || y = 1。该代码可将除了低7位的二进制位外的其他各位均置为1。2、表示 按位或(OR)运算。
2023-05-09 18:29:14
44
原创 C程序设计语言 p38,2-5
编写函数any(s1,s2),将字符串s2中的任意字符在字符串s2中第一次出现的位置作为结果返回,如果s1中有不包含在s2中的字符,返回-1。注意,n是s2中字符的位置,若该字符在s1中不存在,则返回-1,否则返回s1的位置下标。
2023-05-09 18:02:58
35
原创 C程序设计语言 p38,2-4
创建squeeze(s1,s2)函数, 将字符串S1中任何与字符串S2中字符匹配的字符都删除。注意,内层for循环结束后再加终止符。
2023-05-09 17:32:28
35
原创 利用位权法,十六进制转十进制
例如:ox123,其转换过程为,0*16+1 = 1 -> 1*16 + 2 = 18 ->18*16+3 = 291(即前两位视为一个整体18,放在一个位权上)。该方法对其他进制转换同样适用,仅需修改位权。
2023-05-09 12:06:18
245
原创 C程序设计语言 p34,在ASCII中,字符以数字存储,故可以进行运算
注意,若引用头文集 ,则可用函数 tolower(c) ,来将大写字母c转换为小写字母。在该例中,'a'、 'A'均可视为相应数值。
2023-05-09 11:34:08
41
原创 C程序设计语言 p30,字符常量与只有一个字符的字符串
'x'表示一个整数,其值是字母x在ASCII中对应的整数。"x"表示一个字符(即字符x)以及一个结束符"\0"。
2023-05-08 19:01:18
54
原创 C程序设计语言 p22,1-16程序改进
当输入的文本行超过MAXLINE时,len的最大值就是MAXLINE,此时,我们需要调整getline函数,让前MAXLINE-2个字符全部存入,,同时继续计算文本行长度,从而解决len最大值时MAXLINE的问题。引入变量 j 来进行文本行储存,用变量 i 来记录文本行最大长度。
2023-04-26 18:32:52
67
1
原创 C程序设计语言 p13,练习1-9将输入的多个连续空格用一个空格代替
当用C接getchar的值时,无法手动让C指向缓冲区下一个字符,可以增加flag变量,通过空语句,实现当C指向后续空格时,不做任何操作。其中,flag为0表示是第一个空格,flag为1表示非第一个空格,flag初始为0,防止空格开头出现问题。
2023-04-26 16:24:10
151
1
原创 C程序设计 p10,接getchar返回值易错
在没有输入时,getchar会返回一个特殊值,即EOF,当我们定义C来接getchar的返回值时,C要定义为int型而非char型,从而确保C可以储存文件结束符EOF。= EOF 等价于 c = (getchar()!注意:若赋值表达式两边的括号不能省略,因为!= 的优先级高于 =,即。
2023-04-26 15:45:25
110
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人