1楼:沧海雄风
的确出乎意料编译不过
char*p=sz_test;
'initializing':cannotconvertfrom'structt_test[10]'to'char*'
我改好了
003 木有问题
2楼:匿名用户
对于char *p = sz_test
这一操作,部分编译器会报warning, 设置严格的编译器会报error
p-sz_test这一操作,大多数编译器都会报error
因为sz_test是struct t_test*型的,不同类型指针相减,编译器会无法确定怎样做操作
所以比较标准的做法是
char *p = (char *)sz_test
p-(char *)sz_test
如果这样做的话,那么对于p是char *型的,那么p在自加三次后,每次都是地址加1,如果把sz_test也转为char *型的话,那么,p-(char *)sz_test自然就是3,输出也就是003
但是如果这样做
(struct t_test*)p-sz_test
效果就不一样了
结果取决于sizeof(struct t_test) 也就是说和编译器相关了
对于当下最流行的32位机及默认的对齐方式sizeof(struct t_test)为8
而p和sz_test之间的地址差为3,不够一个sizeof,那么结果就是0,输出000
如果是16位机,同时设定为字节对齐,即sizeof(struct t_test)为3的情况下,那么地址差恰好为一个sizeof大小,这时结果是1,输出为001
不过最后一种情况比较难产生,毕竟需要设定对齐方式,还得是古老的16位机编译器,不太好找了
所以要验证这一说法,可以改三个p++为一个p+=8;
然后分别输出
p-(char *)sz_test
(struct t_test*)p-sz_test
看结果 将分别是008 和001
总之,不同类型指针默认无法相减,要减先转换,让系统知道你要以哪个指针类型的长度做基准才可以
3楼:匿名用户
003#include
structt_test
;structt_testsz_test[10];
intmain(intargc,char*argv)
4楼:匿名用户
跟编译器和初始化有关,有的编译器会自动帮你初始化。有的不会。总的来说无法确定
5楼:匿名用户
感觉是003,对于指针不是特别擅长
6楼:畅所欲言呀
sz_test[10];这个结构体数组都没初始化,结果就是无法预料的
关于c语言的一道题,求c高手帮忙解答~谢谢啦
7楼:踽踽独行
8这是递归调用函数!
函数返回值通过指针s返回!
6开始,函数返回值为
f(6,*)=f(5,*)+f(4,*)
f(5,*)=f(4,*)+f(3,*)
f(4,*)=f(3,*)+f(2,*)
f(3,*)=f(2,*)+f(1,*)
f(2,*)=1;这时候返回,不回再继续
答f(1,*)=1;这时候返回,不再继续
f(6,*)=5*f(2,*)+3*f(1,*)=5+3=8错误之处://应为||
判断了==1,==2,如果刚开始n是0或负值那么函数永远不会返回类似于死循环!
8楼:陈宗权
这个程序copy
实际是在计算斐波那契数列:
1,1,2,3,5,8,13,21,……
算法:第1第2两项是1,以后每一项是前两项之和。
fun(int n, int* s)就是计算斐波那契数列第n项的值保存在地址为s的变量中。
所以fun(6,&x)是计算第6项的值(也就是8)保存在x中。
而fun(n-1,&f1)是计算第n-1项的值保存在f1中,fun(n-2,&f2)是计算第n-2项的值保存在f2中。
9楼:匿名用户
您好,看c程序。首先看主函数,我们一步步来开:
1,定义整形变量x,,以x的地址为专参数。调用函数fun ,我们属就带着x来看fun
2,再fun函数内 fun(int n,int *s),,,当我们调用的时候,这个时候n=6,s是x的地址。
3,运行fun函数,首先这个if不执行。执行else,即fun(5,&f1)...
就这样一步步运行。。谢谢!
c语言一道题,第49题为什么选d啊,恳求会的人帮我下吧。
10楼:匿名用户
printf语句中,连续两个%(“%%”)代表转义字符输出‘%’。
所以输出的结果是d。
有一道c语言程序设计的题,老师留的作业,有没有c语言高手帮忙解决一下,设计一个程序。
11楼:匿名用户
#include
int main()
for (i=0;i<2;i++)
for (i=1;i<11;i++)//统计人数return 0;
}帮你解决了! 你也太抠门了哈,一分都不给!
呵呵,我乐于助人!帮你了!
急求答案!!!!求高手帮忙做一下这套c语言的模拟题!!!!!!
12楼:闽盼愚菁菁
判断题答案:错错错错对错对对对错对错对错错错错错对对,我手机啊!先把你的选择题做完。
一道c语言题,求高手解释下这题,一道C语言题
1楼 樣小樣 我把行分好点,直观点 总的目的就是找出50 60中的质数 素数 include stdio h main 输出j k 用来控制转行 如还有其他不明,可继续提问。 2楼 百度用户 include stdio h main 3楼 匿名用户 找素数的程序 ,只是其中的好几句语句没有用 4楼 ...
一道c语言的题目,求大神解答,一道C语言的题目,求大神解答。 5
1楼 云中鹤隐 while scanf d n 是什么 2楼 心河星尘 你忘记将每次循环前将sum清零了。还有格式等等问题。改法是 include int main sum 0 for b 0 b printf 2f n sum n return 0 3楼 匿名用户 include int main...
求解释、一道简单的C语言题目,一道简单的c语言题目,求代码
1楼 流云的歌 我总共做了三个测试。 只有x 0 0 或 null 时,没有给后面的x 1 x 2 赋值时结果是7 0,说明这个字符串是空串。所以是0 当只有x 1 0 时,显示7 1 第三个测试是测试strlen 这个我不用说了。 2楼 小囚love腊肉 x 0 0 x 1 0 这两句赋的值一样,...