【学习ios之路:C语言】字符串溢出情况分析.

本文探讨了在iOS开发中学习C语言时遇到的字符串溢出问题,通过代码示例分析了如何在str2向str3赋值过程中由于str2的溢出导致的异常情况。
摘要由CSDN通过智能技术生成

    代码分析:代码如下:

    char s[5] = "phone";//这个空间大小为5 ,字符串隐藏\0,作为字符串的结束标志.
    char str2[10], str3[10] ; //定义 str2,str3,两个字符数组,空间大小为10, 默认有隐藏字符\0;
    for (int i =0; i< 10; i++) {
        str2[i] = 'a'; //将字符'a'遍历10次,保存到str2中,赋值结束,出现溢出现象,\0被溢出,即,没有结束标志.
        printf("%c ", str2[i]);
    }
    strcpy(str3, str2);
    printf("str3 = %s\n",str3); //结果aaaaaaaaaaphone
    printf("str2 = %s\n",str2);  //结果phone

 

     分析如下:

          str2 和 str3 出现此结果的情况 :str2内的值赋值为str3,因为str2溢出,,

                        数组内存开辟空间是从高地址到底地址存储. 即由高到低的存储顺序为  s -> str2 -> str3
                        但给对应字符数组空间赋值,是从低到高,进行赋值,所以,当开始赋值结果如下:
                        值域,即空间大小     11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值