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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值