一种循环C字符数组的骚操作

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char wenwa[] = "程劲小盆友在做什么";
    int _len = 0;
    while (wenwa[_len])
    {
        printf("%c", wenwa[_len]);
        _len++;
    }
    printf("\n");
    system("pause");
    return EXIT_SUCCESS;
}

看到while的循环条件,不禁让人叹为观止,这他妈的什么操作,详解如下:

  • 首先我们都知道c语言的字符数组作为结束的标志是单引号包裹的字符‘\0‘
  • wenwa[_len]意味着从字符数组的第0位开始读取信息,每次循环体中的_len++都向前推进,所以我们得以读取字符数组中的每一个字符
  • 如上所述,最终索引会推进到数组中的结束符‘/0‘,从而wenwa[_len]会返回false,终止循环

原文地址:https://www.cnblogs.com/saintdingspage/p/10348160.html

时间: 2024-10-08 04:07:32

一种循环C字符数组的骚操作的相关文章

字符串字符数组

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 8 /* 9 字符串的赋值: 10 给 char* 类型的字符串赋值,可以直接使用 "=" 号 11 给 char[] 类型的字符串赋值,需要使用 strcpy 函数 12 13 字符串的特点: 14 需要明白的一点就是字符串以\0结尾, 没有\0就不是字符串 15 只

c语言字符数组的初始化问题

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理: 若小于数组 长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c 语言中,将字符串作为字符数组来处理.(c++中

c语言字符数组与字符串的使用详解

转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *

C语言字符数组的定义与初始化

C 语言字符数组的定义与初始化 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' ).2.字符数组与字符串在c 语言中,将字符串作为字符数组来处

javascript 数组遍历,几种循环方式的比较。

通常我们会用循环的方式来遍历数组.但是循环是 js 性能问题的诱因之一.所以有时候我们不得不在使用循环的方式上略加斟酌.一般我们有以下几种方式来进行数组的遍历: 方式1: for in 循环: var array = [1,2,3,4,5]; for( var val in array ){ fn(val); } 方式2: for (var i=0; i<array.length; i++){ fn(array[i]); } 这两种方法应该非常常见且使用很频繁.但实际上,这两种方法都存在性能问题

字符数组的定义与使用详细解析

1. 字符数组的定义: 用来存放字符量的数组称为字符数组. 形式数值数组相同.例如: char c[10]; 由于字符型和整型通用,也可以定义为int c[10],但这时每个数组元素占2个字节的内存单元. 字符数组也可以是二维或多维数组.例如: char c[5][10]; 即为二维字符数组. 2. 字符数组的初始化 第一种方法是分别对每一个元素进行赋值操作: 字符数组也允许在定义时作初始化赋值.例如: char c[10]={'c', '  ', 'p', 'r','o', 'g', 'r',

给字符数组赋值的方法

main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s.当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串. 当中/0表示字符串终止, 终止符是编译时自己主动加上的,

C-二维数组作为函数参数, 字符数组

1. 如果函数的参数是一个一维数组, 那么我们在传递的时候, 可以传递二维数组的某1行——一个一维数组 2. 二维数组可以作为函数的参数: 如果函数的参数是一个二维数组, 那么传入的实参也必须是一个相同类型的二维数组 3. 同一维数组一样, 当二维数组作为函数的参数的时候, 函数也是声明的一个指针指向传入的二维数组, 并通过指针对传入的二维数组进行操作 4. 当二维数组作为函数的参数的时候, 行数可以不写, 但是列数必须要写 5. 所以跟一维数组一样, 当二维数组作为函数参数是, 函数的参数还要