C语言指针使用不当带来的内存不可读

来源:互联网 发布:淘宝小号 浮云网 编辑:程序博客网 时间:2024/06/14 03:32

小鱼的技术博客,主谈C语言编程,顺便谈谈人生,谈谈理想,关注热链:我的CSDN技术博客

前几天遇到一个C语言初学者提到的一个问题,代码我做了一些修改,如下:

#include <stdio.h> #include <string.h>int main(void) {    char str[10] = "I love C";    char *pStart = &str[0];     char *pEnd = &str[strlen(str) - 1];    char *temp = NULL;    while(pStart < pEnd)     {        *temp = *pStart;         *pStart = *pEnd;         *pEnd = *temp;         pStart++;         pEnd--;    }    printf("now the string is %s\n", str);     return 0;}

代码的本意很简单,定义了一个字符数组,想通过两个指针,一个是pStart指向数组第一个元素,一个指针是pEnd指向数组最后一个元素,来逆序这个字符数组。编译时是可以通过的,可以在运行时总是报错:

这里写图片描述

这个错误的原因说隐蔽也不隐蔽,说容易发现也不是那么容易发现的,我想读者应该知道错误在哪里,可以在留言里指出错误所在。一眼没有发现错误原因的朋友,可不要急着看评论哦~~~

阅读全文
0 0
原创粉丝点击