我试图在我的程序中创建一个指向 main() 参数之一的指针。 我设置了初始指针,然后将其设置为等于数组中的第二个元素,但是当我尝试编译时出现段错误错误。发生这种情况是因为指针指向错误地址吗?
代码如下:
char *filename;
*filename = argv[1];
printf("The filename is: %s", *filename);
我收到有关尝试将参数转换为 int 的指针的错误。这是因为指针实际上是一个整数地址值,而我试图将它设置为一个字符串吗?
编辑:当我更改为“filename = argv[1]”时,我的编译器出现以下错误:赋值从指针目标类型中丢弃限定符。
最佳答案
编译时不可能发生段错误。除非,好吧,编译器违反了内存安全,这是不太可能的。我会认为它会在您运行程序时发生 :D。
问题出在这里:
*filename = argv[1];
应该是:
filename = argv[1];
为什么?您声明了一个指向 char
的指针,未初始化,没有特别指向任何地方。然后,您取消引用该指针并将数据分配给该内存位置。谁知道呢!
编辑:您还在 printf()
调用中取消引用 filename
。删除那个 *
:).
此外,当您分配 *filename 时,编译器没有发出警告吗?我的猜测是在没有强制转换的情况下从指针生成整数? 注意警告,它们提供有用的信息!
干杯。
关于c - 从 main() 参数中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559701/