0
考虑下面的程序为什么strtok在给定一个*字符串时发生段错误,但是当给定一个字符串[]时不会发生段错误?
#include <stdio.h>
#include <string.h>
int main() {
char *str = "This is a test.";
char *token;
token = strtok(str," ");
}
它会出现段错误。但是,如果我将* str改为str [80],则不会。为什么是这样?
谢谢
你知道数组和指针之间的区别吗? – immibis
是的。你是说* str失败,因为它是一个指针,而str []是一个数组? [这个链接](http://www.lysator.liu.se/c/c-faq/c-2.html)说:“由于数组立即衰变成指针,数组永远不会传递给函数。”这让我相信,在这两种情况下,我都会传递一个指向strtok的指针。 – DJames
是的。然而,在工作情况下,您正在向*您的数组*传递一个指针,而在非工作情况下,您将传递一个指向*字符串文字*的指针。 – immibis