以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  [求助]小白弱问  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=53467)


--  作者:鱼
--  发布时间:10/7/2007 6:53:00 PM

--  [求助]小白弱问
大家好`我是新来的`问两个c语言小白的问题`
第一`在C语言中允许do..while循环中嵌套while循环使用?
就是这样
do{
     ...
     while{
    ..
     }
..
}
为什么我这样写通不过编译呢`
第二`
请大家给我分析一下指针数组`
设立指针数组有什么意义呢`
一般怎么使用?
用的时候注意点什么呢`
自己实在看不懂`
谢谢各位`
--  作者:鱼
--  发布时间:10/12/2007 9:37:00 AM

--  
郁闷`没有人理我```
比如说 `谭浩强在一本书里边先说`
char *p;
scanf("%s,*p);
这样的幅值是错误的`会破坏系统`
但接下来他又在讲指针数组的初始化时这样讲
char *p[5];
*p={str1,str2....}
这样不会破坏系统?
--  作者:卷积内核
--  发布时间:10/12/2007 10:08:00 AM

--  
以下是引用鱼在2007-10-7 18:53:00的发言:
大家好`我是新来的`问两个c语言小白的问题`
第一`在C语言中允许do..while循环中嵌套while循环使用?
就是这样
do{
      ...
      while{
     ..
      }
..
}
为什么我这样写通不过编译呢`
-------------------------------
这点你理解错了
do {

} while();
这个才是语法中的关键字,你要嵌套也不能把关键字破坏掉啊。
应该这样写:
 do {
  while (1)
  {
  }
 } while(1);
-------------------------------

第二`
请大家给我分析一下指针数组`
设立指针数组有什么意义呢`
一般怎么使用?
用的时候注意点什么呢`
自己实在看不懂`
谢谢各位`
-------------------------------
这个就是数组中的变量是指针定义的,只有自己用到了才能体会到,多些程序就会了。
-------------------------------



--  作者:卷积内核
--  发布时间:10/12/2007 10:12:00 AM

--  
以下是引用鱼在2007-10-12 9:37:00的发言:
郁闷`没有人理我```
比如说 `谭浩强在一本书里边先说`
char *p;
scanf("%s,*p);
这样的幅值是错误的`会破坏系统`
-------------------------------------
这样本身就是错误的啊,不能把数值往指针地址中赋值,那样就把内存搞乱了。
-------------------------------------

但接下来他又在讲指针数组的初始化时这样讲
char *p[5];
*p={str1,str2....}
这样不会破坏系统?
-------------------------------------
这样是指针正常赋值的方式,没什么问题啊,跟你上面所说没有什么联系的。
-------------------------------------



--  作者:鱼
--  发布时间:10/12/2007 12:16:00 PM

--  
但是他说如第一个的赋值方式会把字符串赋给不可知的地址`
那么在指针数组中就不会赋给不可知地址了么?
或者换个问法的话`作为单独的指针`它在未被赋值之前是指向不确定的地址的`
那么作为指针数组在未做初始化以前是指向不确定地址么``或者是指向一段连续的存储单元?
还有`第一个问题`版主确定是可以嵌套的么````那么我回去检查程序好了``
确实是按你说的那样写的``但它总是过不了编译`哎``
--  作者:卷积内核
--  发布时间:10/12/2007 3:09:00 PM

--  
建议你先研究一下指针再看看上面的问题。
对于嵌套不要忘了While后面的条件,没有条件的while是不能用的。
--  作者:鱼
--  发布时间:10/21/2007 2:32:00 PM

--  
斑竹能不能给我讲讲这个是怎么回事`
int x=y=z=0;
++x||++y&&++z;
printf("%d%d%d",x,y,z);
为什么输出的结果是
x=1,y=0,z=0
实在看不懂```
--  作者:yqdrrjhan
--  发布时间:10/23/2007 9:14:00 PM

--  
以下是引用鱼在2007-10-21 14:32:00的发言:
int x=y=z=0;
++x||++y&&++z;
printf("%d%d%d",x,y,z);
为什么输出的结果是
x=1,y=0,z=0
实在看不懂```

首先确定表达式是自左向右计算的,首先x自增值运算,x值变为1,1即为真,当运行到或运算符的时候如果或运算的左值为真,那么就不进行右值的计算了,所以++y,++z都没有进行计算,结果就是x=1,y=0,z=0。


--  作者:鱼
--  发布时间:10/25/2007 2:10:00 PM

--  
以下是引用yqdrrjhan在2007-10-23 21:14:00的发言:
[quote]以下是引用鱼在2007-10-21 14:32:00的发言:
  int x=y=z=0;
  ++x||++y&&++z;
  printf("%d%d%d",x,y,z);
  为什么输出的结果是
  x=1,y=0,z=0
  实在看不懂```
[/quote]

首先确定表达式是自左向右计算的,首先x自增值运算,x值变为1,1即为真,当运行到或运算符的时候如果或运算的左值为真,那么就不进行右值的计算了,所以++y,++z都没有进行计算,结果就是x=1,y=0,z=0。



试了下`果然`谢谢上边这位师兄了`
--  作者:muxiyu
--  发布时间:12/2/2007 9:20:00 PM

--  
对于
郁闷`没有人理我```
比如说 `谭浩强在一本书里边先说`
char *p;
scanf("%s,*p);
这样的幅值是错误的`会破坏系统`
但接下来他又在讲指针数组的初始化时这样讲
char *p[5];
*p={str1,str2....}
这样不会破坏系统?

char *p;将不分配实际地址,p值为任意,指向随机地址,当然down 掉
char *p[5];分配实际地址给一个数组,数组每个元素存储一个地址,和char p[5]差不多,只不过值为字符


--  作者:muxiyu
--  发布时间:12/2/2007 9:21:00 PM

--  
int x=y=z=0;
++x||++y&&++z;
printf("%d%d%d",x,y,z);

在公司里写这样了程序,可以自动辞职了……


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms