char指针如何与while循环一起使用

时间:2019-06-18 05:16:53

标签: c pointers char

在while循环中,提到*s时,它意味着s中包含的地址处的值,因此在第一种情况下,该值将为'a',

我的问题是while循环将如何检查它,它会检查字符的ASCII值以检查条件是否为真。是否还有其他方法?

main()
{
   char str[] = "abcd" ;
   char *s = str;
   while(*s)
       printf ("%c",*s++) ;
}

2 个答案:

答案 0 :(得分:3)

当您声明类似字符串的变量

char str[] = "abcd";

这就像声明str[5] = "abcd\0";

因此,在您的while循环中,它首先检查*s的值,即'a',该值在ascii表上转换为97。然后,在* s指针内打印当前值,然后将指针加1,这将导致下一个字符。当您到达\0时,循环将退出,因为\0等于0;

答案 1 :(得分:1)

如果Task::join('events', function ($join) { $join->on('events.task_id', '=', 'tasks.id') ->where('events.event_type', '=', 'Task') ->where('events.task_stage', '!=', 'assigned'); })->select('tasks.*','tasks.id as taskId')->get();

,将执行C / C ++代码中的

while(conditon)

由于它是已取消引用的char *,这意味着它是一个1字节的值。范围是0-255。

由于第一个值为'a',这意味着它将在值255之后将表从值'a'(61)打印到'nbsp'(255),char值将溢出为'0'或NULL字符condition != 0的计算结果为false,程序将结束。

enter image description here