7、void* 与 C 结构体
问:能否设计一个方法接受任意类型的参数然后返回整数?同时是否有办法传递多个这样的参数? 答:一个能接受任意类型参数的方法像下面这个样子:
如果需要传递多个参数,那么我们可以传递一个包含这些参数的结构体
8、* 与 ++ 操作符
问:以下代码将输出什么?为什么?
答:以上的输出将是:
因为++与 * 的优先级一样,所以 *ptr++ 将会从右向左操作。按照这个逻辑,ptr++ 会先执行然后执行*ptr。所以第一个结果是'L'。也因为 ++ 被执行了,所以下一个printf() 结果是'i'。
9、Making changes in Code segment
问:以下代码运行时一定会崩溃,你能说出原因吗?
答:这是因为,通过 *ptr = 'T',此行代码尝试更改只读内存存储的字符串'Linux'。此操作当然行不通所以才会造成崩溃。
10、Process that changes its own name
问:你能否写一个程序在它运行时修改它的名称?
答:以下代码可以完成
11、局部变量的返回地址
问:下面的代码有问题吗?如果有,如何修改?
答:虽然上面的代码有时运行会很好,但是在方法 inc() 中有很严重的隐患。当inc()方法执行后,再次使用局部变量的地址就会造成不可估量的结果。解决之道就是传递变量a的地址给main()。
12、处理 printf() 参数
问:以下代码输出请问是什么?
答:输出将是
这是因为参数都是从右向左处理的,然后打印出来却是从左向右。