c - 为什么我不能编译这段代码并且我得到分段错误:C 代码中的 11
问题描述
我对编码很陌生,有人可以帮忙吗,谢谢!
#include <stdio.h>
int main()
{
int var1 = 5;
char var2 = 'a';
int *ptrl = &var1;
char *ptr2;
*ptr2= "b";
print ("var1 tem o mesmo %p e ovalor %d\n", ptr1, *ptr1);
print ("var1 tem o mesmo %p e ovalor %d\n", ptr2, *ptr2);
}
解决方案
线
*ptr2= "b";
调用未定义的行为,因为它使用 的(不确定的)值ptr2
,这是未初始化的非静态局部变量。
它应该是
ptr2 = "b";
设置ptr2
自身的值而不是 指向的值ptr2
。
此外,您应该将指针转换为通过%p
to打印,void*
因为规范要求void*
.
还有一点是你应该使用const char*
指针来分配字符串文字,因为修改字符串文字是被禁止的。
#include <stdio.h>
int main()
{
int var1 = 5;
char var2 = 'a';
int *ptr1 = &var1;
const char *ptr2;
ptr2= "b";
printf ("var1 tem o mesmo %p e ovalor %d\n", (void*)ptr1, *ptr1);
printf ("var1 tem o mesmo %p e ovalor %d\n", (void*)ptr2, *ptr2);
}
推荐阅读
- reactjs - 何时在 NextJS 应用程序中使用可加载组件?
- python-3.x - 如何在 django 中为一个模型文件创建一个迁移文件
- android - 白屏来自在颤振中在另一台设备上调试
- mysql - 我如何为 4 个表中的特定结果进行连接并且没有一个相关?
- javascript - 为什么我在执行突变时收到“不能为不可为空的字段返回 null”错误?
- reactjs - 如何使用 Reactjs 获取 CSV 数据并存储到状态中?
- python - 我怎样才能漂亮地处理这个脏的多次尝试代码
- php - 从单词数组中查找唯一排列,将一组单词限制为 12 个字符
- java - 输入 3 位数字并打印最大的数字
- regex - 如何计算网站上的表格数量