我试图创建一个指向我的程序中的一个main()参数的指针.我设置了初始指针,然后我将它设置为等于数组中的第二个元素,但是当我尝试编译时出现错误,分段错误.这是因为指针指向错误的地址吗?
这是代码:
char *filename;
*filename = argv[1];
printf("The filename is: %s", *filename);
Run Code Online (Sandbox Code Playgroud)
我得到错误的指针试图将参数转换为int.这是因为指针实际上是一个整数地址值,我试图将它设置为等于字符串?
编辑:当我更改为"filename = argv [1]"时,我从编译器中得到以下错误:赋值从指针目标类型中丢弃限定符.
编译时不可能发生分段错误.除非,编译器违反了内存安全性,这是不太可能的.我会认为它在你运行程序时会发生:D.
问题出在这里:
*filename = argv[1];
Run Code Online (Sandbox Code Playgroud)
它应该是:
filename = argv[1];
Run Code Online (Sandbox Code Playgroud)
为什么?你声明了一个指向char,酉,无处不在的指针.然后,您取消引用该指针并将数据分配到该内存位置.哪个,好吧,谁知道在哪里!
编辑:你还提领filename的printf()电话.删除*:).
另外,没有'编译器在你指定*filename时发出警告?在没有演员表的情况下从指针制作整数,我猜是什么?注意警告,它们提供有用的信息!
干杯.
| 归档时间: |
|
| 查看次数: |
4368 次 |
| 最近记录: |