有趣的C语言--字符串与数组和指针的秘密

    xiaoxiao2025-05-25  6

    1、初始化

    我们可以通过下面方式来初始化一个字符串

    char arr[] = "this is array"; char * pointer = "this is pointer";

    2、输出

    1.数组符号方式

    for(i=0;i<6;i++) putchar(arr[i]); putchar('\n'); for(i=0;i<6;i++) putchar(pointer[i]);

    输出如下

    this i this i

    2.指针加法方式

    for(i=0;i<6;i++) putchar(*(arr+i)); putchar('\n'); for(i=0;i<6;i++) putchar(*(pointer+i));

    输出如下

    this i this i

    3.增量运算符

    指针用增量运算符,数组用for循环输出每个char

    while(*(pointer) != '\0') putchar(*(pointer++));

    输出如下

    this is pointer

    3、修改数据

    数组修改数据方法如下

    arr[5] = 'z'; printf("this is array"); printf(": chang to %ss \n","this is array"); printf("%s",arr);

    输出如下

    this is array: chang to this is array this zs array

    指针修改的话,会存在问题,可能有些编译器会直接编译不通过

    pointer[5] = 'z'; printf("this is pointer"); printf(": chang to %ss \n","this is pointer"); printf("%s",pointer);

    如果编译通过,可能会有如下输出

    this zs pointer: chang to this zs pointer this zs pointer

    这原因可能为,编译器用相同地址来替代this is pointer。所以,我们printf("this is pointer");中的字符串的指向地址也是pointer,所以我们对pointer的修改也会影响到最后的结果。

    4、字符串数组

    char arrs[3][20]={"this is arr1","this is arr2","this is arr3"}; char * pointers[3]={"this is pointer1","this is pointer2","this is pointer3"}; printf("%s\n",arrs[1]); printf("%s\n",pointers[1]);

    输出如下,指针数组的3对应arrs[3][20]中的3

    this is arr2 this is pointer2

    源码地址:https://github.com/oDevilo/C

    转载请注明原文地址: https://ju.6miu.com/read-1299251.html
    最新回复(0)