2016-07-25 58 views
0
char *strstr(char *string2, char string*1) 

strstr函數參數是指向字符串,但是當我們通過從主要論點..爲什麼我們只使用字符串而不是它們的地址?爲什麼我們不傳遞指針參數在中的strstr主要功能

#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

s1和s2是(或可以用作)指針。它們都指向字符串的第一個字符。

這裏是從文本C標準

6.3.2.1左值,數組和功能指示器
...
3除了當它是 sizeof操作者的操作數或一元 &操作者,或是用於初始化數組文本的字符串,其具有輸入「」轉換到與類型「的表達式」指針 類型「」指向的初始元素「 類型的陣列」的表達式日È陣列對象,並不是左值。如果數組對象具有寄存器存儲類,則行爲未定義。

我要指出,你可以定義一個字符串。

char* s1 = "My House is small"; 

但是這不會是一樣

char s1 [] = "My House is small"; 

因爲char* s1將在含有字串文本和char s1 []將被定義爲在棧上的靜態數組一些只讀存儲器被定義。

相關問題