c - 字符指针赋值
问题描述
char *reverse(char *str){
char *reverse,*temp;
int size = length(str);
temp = reverse;
/*go to last adress str*/
while(*str != '\0'){
str++;
}
/*copy str in reverse to reverse*/
do{
str--;
*reverse = *str;
reverse++;
size--;
}while(size >= 0);
return temp;
}
在这个函数中,当我将反向指针分配给临时指针时,我得到了分段错误。如果我添加reverse = (char*)malloc(size*sizeof(char));
它工作正常。但是它是否必须在不添加它的情况下工作,它是否已经收到了一个地址。是因为下一个地址的长度大约是整数。
解决方案
实际上reverse
只是一个指针,实际上没有分配它可以指向的内存。您可以使用malloc()
,也可以简单地将reverse
其作为附加参数传递给函数。然后你只需要确保它是由调用者分配的并且大小合适。
如果可以指向内存中的任何位置并简单地将数据写入您想要的任何位置,那么所有程序甚至整个操作系统都会崩溃或病毒可以直接感染一切...... ;-)
推荐阅读
- qt - 在 <> 处禁用 arm-Preemption 上的视频播放
- javascript - 资源 URL 中使用的 Angular 4 不安全值
- html - 自动播放音频 qualtrics html5
- c# - Visual Studio 2017 - 发布文件夹中可能不需要的 dll
- android - Proguard 导致 Android 导航组件运行时异常
- objective-c - CGGlyphs 位置错误
- apache-spark - 如何同时运行 Spark SQL JDBC/ODBC 服务器和 pyspark?
- python - Pandas 在排除时有条件地创建
- c# - Xamarin.Forms 自定义控件 AmbiguousMatchException
- python - 无法在 python 中同时使用加载和加载命令打开 JSON 文件