博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串必须申请内存空间
阅读量:5293 次
发布时间:2019-06-14

本文共 1023 字,大约阅读时间需要 3 分钟。

#include "stdafx.h"#include "stdlib.h"int _tmain(int argc, _TCHAR* argv[]){    //输入字符串     char *str;     scanf("%s",str);     printf("输出输入的字符串*str=%s\n",&str);     system("pause");    return 0;}

代码出现指针问题

原因:

这样使用容易造成内存错误。

char *str; 声明了一个指针,但没有对其进行初始化,他的值是一个无法预知的值。可能指向一段空的内存,也可能指向其他程序使用的内存地址,也可能不是无用的内存地址。
scanf("%s",str); 的意思是获取一段字符串,并把字符串放到str所指的内存地址之后的一段空间。但本程序并没有申请内存空间,所指的那段内存空间就是上面三种情况中的一种。所以有可能就将其他程序的内存内容给改变了,其他程序崩溃了。
printf("输出输入的字符串*str=%s\n",&str);
这个输出语句也存在问题,&str 应改为str,这的值是字符串地址的头指针,而不是str这个变量所在的地址。&str str这个变量在内存中的地址。str 的值是字符串地址的头指针

改正:

#include "stdafx.h"#include "stdlib.h"int _tmain(int argc, _TCHAR* argv[]){    //输入字符串     char str[50];    scanf("%s",str);    printf("输出输入的字符串*str=%s\n",str);    system("pause");    return 0;}

或者:

#include "stdafx.h"#include "stdlib.h"int _tmain(int argc, _TCHAR* argv[]){    //输入字符串     char *str = (char*)malloc(100);    scanf("%s",str);    printf("输出输入的字符串*str=%s\n",str);    system("pause");    return 0;}

 

转载于:https://www.cnblogs.com/mhq-martin/p/11427407.html

你可能感兴趣的文章
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
统计单词,字符,和行
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
使用Chrome(PC)调试移动设备上的网页
查看>>
使用gitbash来链接mysql
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
C#基础_注释和VS常用快捷键(一)
查看>>
虚拟DOM
查看>>
uva 11468 Substring
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>