有没有人会C语言
刘慈欣吧
全部回复
仅看楼主
level 12
苍穹之颠 楼主
char**p, *name[ ]={“Follow Me”,“Dephi”, “Visual Basic”, “C++”, “ComputerProgram Design”};
p=name+2;
printf (“%o\n”,*p);
printf (“%o\n”,p);
printf (“%s\n”,*p);
第一个输出表达式,以八进制输出的结果是什么?是name[2]的位址,还是字符串Visual Basic的位址,还是V的ACSII码?
第二个输出表达式的结果又是什么呢?
第三行呢?
谢谢各位了。
2014年06月26日 13点06分 1
level 14
挂科党压力山大
2014年06月26日 13点06分 2
level 15
太高端了
2014年06月26日 13点06分 3
level 13
忘记
2014年06月26日 13点06分 4
level 14
我好兴奋啊 我好兴奋啊
2014年06月26日 13点06分 5
q姐真特么坏[喷]
2014年06月27日 02点06分
回复 面壁者1375 :你把人家的钩钩喂狗了吗[啊]
2014年06月27日 04点06分
回复 yangquan5525 :他是被掰弯了才变成g姐的[喷]
2014年06月27日 06点06分
回复 面壁者1375 :原来真相是这样的啊。。。
2014年06月27日 13点06分
level 1
char**p, *name[ ]={“Follow Me”,“Dephi”, “Visual Basic”, “C++”, “ComputerProgram Design”};
p=name+2;
//p指向 Visual Basic字符串
printf (“%o\n”,*p);
//unsigned int型数据占据4个字节32位,于是把指向的Visual Basic字符串截出4个字节32位按照ANSI II码8进制的形式打印出来,32/3 = 10 余两位,所以可能会打印11位的8进制数
printf (“%o\n”,p);
//和上一个打印语句打印的东西方式相同,不过打印的是Visual Basic这个字符串的首地址,而地址数据占4个字节,32位
printf (“%s\n”,*p);
//打印Visual Basic字符串
2014年06月26日 14点06分 6
[大拇指]
2014年06月27日 08点06分
level 12
只会初级的cpp......
2014年06月26日 14点06分 7
level 12
运行一下不就好了[狂汗]
2014年06月26日 16点06分 8
如果我的电脑能运行VS我也不会上来问人
2014年06月26日 16点06分
回复 苍穹之颠 :vc可以啊
2014年06月26日 23点06分
回复 苍穹之颠 :虚拟机走起[狂汗]
2014年06月27日 01点06分
level 14
name[]是一个指针数组,里面存放的都是指针
从char**p, *name[ ]={“Follow Me”,“Dephi”, “Visual Basic”, “C++”, “ComputerProgram Design”};可以看出初始化name[]时存放了5个指针,他们的值,分别指向5个字符串的首地址。可以认为在五个格子内放了5个地址,但同时5个格子也具有格子的地址,理清这一点很重要。如图蓝色线条便是数组每个格子的地址
p=name+2; name+2取的是数组的第三个元素,该元素的值就是字符串Visual Basic的首地址
printf (“%o\n”,*p); p是一个二级指针,对其*运算得到的是name[]数组第三个格子里存储的值,输出的是字符串Visual Basic的首地址
printf (“%o\n”,p); p作为一个二级指针,直接存放的是另一个指针的地址,也就是数组name[]第三个格子自身的地址,注意是格子自身的地址,并不是格子里存储的值,所以输出的数组第三个格子自身的地址。
printf (“%s\n”,*p); %s输出字符串,*p是Visual Basic的首地址,自然输出Visual Basic
2014年06月26日 17点06分 9
你跟6楼说得不一样啊……
2014年06月26日 22点06分
这一楼是正解[啊]
2014年06月27日 00点06分
回复 苍穹之颠 :我觉得6楼应该才是正解。p指向的就是Visual Basic的首地址,不信你可以把p强转成整型指针,打印下数据就明白了。
2014年06月27日 01点06分
这个人是对的,name是栈上的声明的数组,所以name的应该是 ebp - 4 - 5*4 , 所以p实际是指向了栈上一个地址, ebp - 4- 5 * 4 + 2 * 4, 同样也是指向栈空间的指针。
2014年06月27日 16点06分
level 13
好高端。…我基本忘记指针怎么用了
2014年06月26日 17点06分 10
level 14
p指向的是name[2]的地址,并非Visual Basic
从图中可以看出,name[2]其实就是在当指针使用
2014年06月27日 03点06分 11
level 14
2014年06月27日 03点06分 12
level 14
如果想得到六楼的结果就必须对p进行两次间运算,那样就要printf (“%o\n”,**p);这样写
2014年06月27日 03点06分 13
1