问个简单的指针问题(我没看明白)

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:42:33
st为指针,cnt为int型,
while(st++)
++cnt;
while(*st++)
++cnt;
这两个循环有什么不同啊
能讲详细点吗?谢谢哈!
是c++
可是检测字符串为空,为什么是if(st)呢
而不是if(!*st)

加入st[2]={1,9};
while(st++)
++cnt;
//st指针向前移动一位
//结果是*st为9

while(*st++)
++cnt;
//st指针指向的变量加1
//结果是st[0]=2了

//if(st)
一般先检查指针为空,如果指针为空的话,字符串一定是空的
如果st没有被初始化,那么st所指向的空间就是内存空间,可能是乱七八糟的值,这样if(!*st)也没有办法判断字符串是否为空了

while(st++)
++cnt;

ST指针向前移动一位

while(*st++)
++cnt;

ST指针指向的变量加1

int st[3] = {0,1,2};

while(st++) //指针向后移动一位,比如原来指向st[0]现在指向st[1]
// 循环将一直继续直到st遇到的元素不是int类型
++cnt; // cnt自增1

while(*st++) //其实是*(st++),该表达式的副作用是获得当前st指向的元素的值,并将st指针向后移动一位
//循环将继续进行知道st指向的值变为0
++cnt;

第一个指针循环是对指针变量的增加,使它志向下一位,
第二个是,对指针所指向变量的值的增加

是C语言不?
我记得好象一个是对指针的自增
一个是对地址的自增吧