2017-10-02 13 views
-2

の値を変更しません。関数が完了すると、値は変更されません。 たときにそれらが変更された機能指数()を実行し、私は非常に多くの値を更新するために何を行うことができます...関数は、indexs()関数を呼び出すときに値

void indexs(int i , char *str,int indexStart,int indexEnd,int wordlen) 
{ 
    int words = 1; 
    int len = strlen(str); 
    for (int j = 0; j < len; j++) 
    { 
     if (str[j] == ' ') 
      words++; 
    } 
    if (i > 0 && i <= words) 
    { 
     words = 1; 
     int k = 0; 
     while (words != i) 
     { 
      if (str[k] == ' ') 
       ++words; 
      ++k; 
      ++wordlen; 
      if (words == i) 
      { 
       indexStart = k; 
       while (str[k] != ' ' && k != (len-1)) 
       { 
        wordlen++; 
        k++; 
       } 
       indexEnd = k; 
      } 
     } 
    } 
    else 
    { 
     printf("The index dosen't exsist\n"); 
    } 
} 
char delete(char *str) 
{ 

    int i, indexStart = 0, indexEnd = 0, wordlen = 0; 
    printf("Enter the index of the word that you want to remove: "); 
    scanf("%d", &i); 
    indexs(i, str,indexStart,indexEnd,wordlen); 
...... 
} 
+1

どのような値ですか?これは何をするはずですか?どのように呼びますか? –

+0

@WendingPeng:Cには "pass by reference"(C++と同様)がなく、 "値渡し"だけです。しかし、OPはいくつかの変数のアドレスを渡すことができます。 –

+0

[参照渡しと値渡しの違いは何ですか?](https://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing- –

答えて

1

あなたはこのような、のいずれかの機能のうち、データを渡し、それを返すか、その変数へのポインタを渡したい場合:

void indexs(int i , char *str,int *pIndexStart,int *pIndexEnd,int wordlen) 
{ 
... 
*pIndexStart = 0; // Set the *contents* of the pointer, by putting a * before it 
} 

とこのようにそれを呼び出す:

int MyVariable, MyOtherVariable; 
indexs(0, "hi", &MyVariable, &MyOtherVariable, 2); 

&シンボルは、変数値の代わりに変数inへのポインタを渡します。

詳細については、ウェブサイトをご覧ください。http://www.thegeekstuff.com/2011/12/c-pointers-fundamentals/

0

を、あなたは、このような値のみで更新取得された値ことでコールによって、あなたの関数を呼び出していると関数index()は、関数delete()を呼び出す際には使用されません。 呼び出し関数の変更を反映するには、ポインタ(呼び出し、呼び出し)を渡すことによって、これらのパラメータを渡す必要があります。 Cでは

+2

いいえ、Cには「参照による呼び出し」はなく、値で引数を渡すだけです。しかし、その議論は、いくつかの変数の*アドレス*かもしれません。 –

+0

は実際には参照で呼び出すか、ポインタによる呼び出しやアドレスによる呼び出しを意味します。 – krpra

+0

いいえ、参照による呼び出しはCに存在しません。したがって、用語は間違っています。 –

関連する問題