- 博客(34)
- 收藏
- 关注
原创 C Primer Plus Notes 12
因此,oof 首先是一个内含3个元素的数组。由于 pf 指向 ToUpper 函数,那么 *pf 就相当于 ToUpper 函数,所以表达式 (*pf)(mis) 和 ToUpper(mis) 相同。/* 无效,ToLower()不是地址,且ToLower()的返回类型是void,他没有返回值,不能在赋值语句中进行 赋值。圆括号()使得 * 先与 uuf 结合,说明 uuf 是一个指针,所以 uuf 是一个指向 3 x 4 的 int 类型二维数组的指针。
2025-12-03 15:55:53
281
原创 C Primer Plus 13.10 复习题
用fprintf()时把8238201当做7个字符存储,用fwrite()时把8238201当做一个4字节整形存储。二进制流和文本流的区别是在读写流时程序执行的转换(二进制流 不转换,而文本流可能要转换换行符和其他字符)。通常,标准错误被定向到与标准输出相同的位置,但是标准错误不受标准输出重定向的影响。"a+"模式打开文件只允许在文件的末尾添加内容。"r+"模式更适合用来更改文件中已有的内容。打开一个文件,将文件中的数字打印在屏幕上。"w+"模式打开文件会丢弃文件原来的内容。第三个是将消息打印到标准错误。
2025-11-15 22:31:13
181
原创 C Primer Plus Notes 11
除此之外,它还包含错误和文件结尾的指示器、一个指向缓冲区开始处的指针、一个文件标识符和一个计数(统计实际拷贝进缓冲区的字节数)。fseek( )的第1个参数是 FILE 指针,指向待查找的文件,第2个参数是偏移量(offset)。fp 指定待写入的文件。文件指针并不指向实际的文件,它指向一个包含文件信息的数据对象。在 fread( ) 函数中,ptr 是待读取文件数据在内存中的地址,fp 指定待读取的文件。ftell( )函数的返回类型是 long,它返回的是参数指向文件的当前位置距文件开始处的字节数。
2025-11-12 22:31:43
309
原创 C Primer Plus 12.8 复习题
定义一个函数名为 value_ct( ) 函数,该函数第一个参数为 int 类型的数组,且该数组内容不可改变,第二参数和第三个参数都是 int 类型变量,函数返回一个 int 类型的参数。添加 const 限定符的作用,保护的是函数内部的代码,防止在函数体内意外修改这些参数,对主调程序没有影响。stem( )函数中声明的rose只对stem( )函数可见(先隐藏之前声明的rose,使用函数块中的rose)extern声明的daisy对stem( )函数、root( )函数可见。②静态、内部链接存储类别。
2025-11-01 16:14:36
182
原创 C Primer Plus Notes 10
最后, Pocus 是外部变量, magic( )可见,但是 main( ) 不可见,因为 Pocus 被声明在 main( )后面。接受一个参数(所需内存的字节数),找到合适的空闲内存块,这样的内存是匿名的。具有块作用域、函数作用域或函数原型作用域的变量都是无链接变量,这意味着这些变量属于定义它们的块、函数或原型私有。具有文件作用域的变量,从它的定义处到该定义所在文件的末尾均可见。上面for循环中的变量i被视为for循环块的一部分,它的作用域仅限于for循环,一旦程序离开for循环,就不能再访问i。
2025-10-30 22:37:27
344
原创 C Primer Plus 11.12 复习题
由于 *pc 为空字符(‘\0’),不会进入第 1 个 while 循环,第二个 do{}while 循环先对 pc 递减,则表达式 pc - str 永远为负,循环一直进行下去。“$” 是字符串字面值,末尾还有空字符(‘\0’),占 2 个字节的内存。答:字符串是以空字符(‘\0’)结尾的一系列字符,故上述声明的是一个。*--pc : 表示指针先前移动一位,然后取指针指向的值。sign 是 char 类型变量,占 1 个字节的内存。‘$’ 是 char 字面值常量,占 1 个字节的内存。
2025-10-13 16:42:08
369
原创 C Primer Plus Notes 09
该变量最初指向该字符串的首字符,但是它的值可以改变。注意:使用 printf( ) 打印 put2( ) 的值,为了获得 put2( ) 的返回值,计算机必须先执行 put2( ) ,因此在打印字符数之前先打印了传递给 put2( ) 函数的字符串。如果 s 字符串中包含 c 字符,该函数返回指向 s 字符串首次出现的 c 字符的指针(末尾的空字符也是字符串的一部分,所以在查找范围内);该函数返回 s 字符串中 c 字符的最后一次出现的位置(末尾的空字符也是字符串的一部分,所以在查找范围内)。
2025-10-11 20:55:23
594
原创 C Primer Plus 10.12 复习题
数组在内存中是按行连续存放的,所以torf[0][0]后面是torf[0][1](偏移1个int),然后后面是torf[1][0](偏移2个int)。( 因为ptr是int型指针,所以ptr+2表示向后移动2个int单元,即指向torf[0][0]后面第2个int元素。( ref + 1 并不会改变 ref 的值,而 ++ref 会改变 ref 的值 )。ref + 1 表示:指针指向 &ref[1] ,也就是数组第二个元素的地址。或 &grid[0][0];ref 的地址是: &ref[0]
2025-09-24 21:16:47
772
原创 C Primer Plus Notes 08
而 zippo{0] 本身是一个内含两个整数的数组,所以 zippo[0] 的值和它首元素(一个整数)的地址(即 &zippo[0][0] 的值)相同。但是, int ar[] 只能用于声明形式参数,他可以提醒读者 ar 指向的不仅仅是一个 int 类型值,还是一个 int 类型数组的元素。⑥指针的值是它所指向对象的地址,在指针前面使用 * 运算符可以得到该指针所指向对象的值,指针加1,指针的值递增他所指向类型的大小(以字节为单位,比如:short类型 2 字节 double类型 8 字节)
2025-09-24 16:43:02
731
原创 C Primer Plus 9.10 复习题
在函数调用的括号中,在函数调用时传递给函数的具体的值(可以是常量、变量、表达式等)在函数定义的括号中,是函数定义时使用的占位符,用于接收值得变量。
2025-09-17 21:33:22
195
原创 C Primer Plus Notes 07
简而言之,形式参数是被调函数(called function)中的变量,实际参数是主调函数(calling function)赋给被调函数的具体值。在C语言中,n++(后缀自增运算符)的核心行为就是:先使用变量n的当前值参与整个语句的运算,等整个语句(更精确地说是“序列点”前的所有操作)执行完毕后,再让n的值增加1。正如 char 类型变量的值是字符,int 类型变量的值是整数,指针变量的值是地址。时会被升级为 double 类型)在我们的系统中,两个 double 类型的值就是两个 64 位的值,所。
2025-09-17 20:10:06
345
原创 C Primer Plus 8.10 复习题
是 getchar() 或 scanf() 返回的信号(一个特殊值),表明函数检测到文件结尾。getchar() 读取一个字符然作为 putchar() 的参数打印出来。C 的标准 I/O库 把不同的文件映射为统一的流来处理。数值输入会跳过空格和换行符,但是字符输入会读取空白符。因为 getchar() 不需要参数。b. 发出一声警报(如果系统使用ACSII)d. 鼠标跳动位置后退(向左)一格。(有的系统不支持重定向符号前后有空格)c. 鼠标跳至下一行开始位置。(非标准但有效的格式)
2025-09-11 21:19:09
173
原创 C Primer Plus Notes 06
③由于 getchar()函数的返回类型是 int,如果把 getchar()的返回值赋给 char 类型的变量,一些编译器会警告。scanf()也会读取两个字符,计算出它们对应的数值42.0,用内部的浮点表示法表示该值,并将结果储存在float类型的变量中。在C语言中,用 getchar()读取文件检测到文件结尾时将返回一个特殊的值,即 EOF (end of file 的缩写)。在大部分系统中,用户输入的字符被收集并储存在一个被称为缓冲区( buffer )的临时储存区,按下 Enter 键后,
2025-09-10 23:07:17
330
原创 C Primer Plus Notes 05
有的程序只需要用户输入的第一个字符,这种丢弃一行中其他字符的行为,经常出现在响应单字符的交互程序中。由于最后丢弃的字符是换行符,所以下一个被读取的字符是下一行的首字母。①对于 while (do while)循环,执行 continue 语句后的下一个行为是对循环的测试表达式求值。并立即进行循环的条件判断(在while和do-while中)或执行for循环的增量步骤(在for循环中),= '\n' 求值。在C语言中,continue语句用于跳过当前循环迭代中剩余的代码,并立即开始下一次循环迭代。
2025-09-04 14:49:49
455
原创 C Primer Plus 6.15 复习题
当 value 是 double 类型时,即使 value 小于1,循环的测试条件仍然为真。声明函数返回类型为 long ,并包含一个返回 long 类型值的 return语句。另外,value是double类型时,%3d转换说明要换成%3f。循环将一直执行,直到浮点数下溢生成0为止。
2025-08-21 12:02:12
246
原创 C Primer Plus Notes 04
在控制台输入中,EOF可以通过特定的键盘组合触发(如在Windows中是Ctrl+Z,在Unix/Linux中是Ctrl+D)。因此,整个逗号表达式的值是逗号右侧表达式的值,而且左侧的赋值表达式把249赋给变量houseprice。(先把 3 赋给 y,递增 y 为4,然后把 4 加 2 之和(6)赋值给 z,接着加上 5, 最后把结果 11 赋给 x。在C中,这个不是语法错误,C编译器会将其解释为一个逗号表达式,即 houseprice = 249是逗号左侧的子表达式,,用户输入了"abc",则返回0。
2025-08-21 09:21:21
302
原创 C Primer Plus 5.10 复习题
放在 while{} 循环中,第一次输入0 或 负数的话,sec 会跳过while{}循环的条件判断使 printf()函数可以打印值。"COMPUTER BYTES DOG",但是while{} 循环语句没有使用花括号将n++递增语句包含进入循环块。因此,程序将一直打印 MESG,进入死循环。①程序第一次进入while{} 循环条件判断时 sec 没有被赋值 ,sec 储存的是内存的垃圾值。程序 while{} 循环语句根据(n < 5)的条件表达式进行循环判断,程序原功能是打印5遍。
2025-08-16 17:48:48
182
原创 C Primer Plus Notes 03
13.45e12#,并停在空格处,空格将被留在输入中作为下一次输入的首字符:然后,scanf()把这10个字符。输出为:` 3.142`(总宽度10,包括小数点和小数部分,右对齐,保留3位小数,四舍五入)。如果其对应得转换说明是%d,scanf()会读取3个字符(-13)并停在小数点处,小数点将被留在。除了%c模式(读取下一个字符),scanf()在读取输入时会跳过非空字符前的所有空白字符,在C语言中,浮点数除法的结果是浮点数,整数除法的结果是整数,整数除法结果的小数部分被丢弃,
2025-08-14 18:20:39
258
原创 C Primer Plus Notes 02
类似地,根据第3个和第4个%ld,printf()读取n2的前半部分和后半部分,并解释成两个。根据下一个%ld转换说明,printf()再读取4字节,这是n1的后半部分,将被解释。转换说明表明printf()应该读取4字节,所以printf()读取栈中的前4字节作为第1个值,这是n1的前半部分,当printf()查看n3(本系统中long为4字节)时,除了查看n3的4字节外,还会查看n3相邻的4字节,① %e转换说明让printf()函数认为待打印的值是double类型(本系统中double为8字节)。
2025-08-14 09:21:13
658
原创 C Primer Plus Notes 01
23、 scanf()函数只读取了Angela Plains中的Angela,它在遇到第1个空白(空格、制表符或换行符)时就不再读取输入。\v 垂直制表符(跳至下一行相同位置) \\ 反斜杠(\) \' 单引号(’) \" 双引号(")完全相同,但是一个解释为long类型,另一个解释为float类型,这两个相同的位组合表示的值也完全不同。即把4个独立的8位ASCII码储存在一个 32 位储存单元中。\t 水平制表符 (鼠标跳动至下一个水平制表点,一般制表点在第1、9、17、21的位置,不绝对)
2025-08-14 09:19:16
441
原创 C Primer Plus 4.7 复习题
1.程序不能正常运行。第1个scanf()语句只读取用户输入的名而用户输入的姓仍留在输入缓冲区中(缓冲区是用于储存输入的临时存储区)。下一条scanf()语句在输入缓冲区查找变量时,从上次读入结束的地方开始读取。这样就把留在缓冲区的姓作为体重来读取,导致 scanf()读取失败。另一方面,如果在输入姓名时输入Lasha 144,那么程序会把144作为用户的体重(虽然用户是在程序提示输入体重之前输入了144)。3.#define Q "His Hamlet was funny without being vu
2025-08-13 11:39:23
375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅