char *strstr(char *string2, char string*1)
在strstr
函数中,参数是指针字符串,但是当我们从main传递参数时..为什么我们只使用字符串而不使用它们的地址?
#include <stdio.h>
#include <string.h>
main()
{
char s1 [] = "My House is small";
char s2 [] = "My Car is green";
printf ("Returned String 1: %s\n", strstr (s1, "House"));
printf ("Returned String 2: %s\n", strstr (s2, "Car"));
}
答案 0 :(得分:0)
s1和s2是(或可以用作)指针。它们都指向字符串的第一个字符。
以下是c标准
的文字6.3.2.1左值,数组和函数指示符
...
3除非它是sizeof
运算符或一元&
运算符的操作数,或者是用于初始化数组的字符串文字,否则表达式的类型为''数组 type < / em>''被转换为类型为''指向 type '的指针的表达式,它指向数组对象的初始元素,而不是左值。如果数组对象具有寄存器存储类,则行为未定义。
我应该提一下你可以用。
定义一个字符串char* s1 = "My House is small";
但这与
不一样char s1 [] = "My House is small";
因为char* s1
将在包含字符串文字的只读内存中定义,而char s1 []
将被定义为堆栈上的静态数组。