0

constant-character-array( )の内容を変更したいconst array[64]
以下は私のコードです。
私の質問const char *appendは、定数文字ポインター( )として関数に渡されたときに、定数文字配列が変更されない(反映されない)のはなぜですか?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int function(char *d,const char *append)
{
 append = d; //changing the location of append.
 printf ("%s\n",append); //displays as sachintendulkar.
}

int main()
{
    char *d = NULL;
    const char append[]={'s','a','c','h','i','n'};
    d = calloc(sizeof(char),sizeof(append));
    strcpy(d,append);
    strcat(d,"tendulkar"); //appending
    function(d,append);
    printf ("%s\n",append); //Its displays as sachin instead of sachintendulkar???
}
4

2 に答える 2

4

関数の引数は値によって渡されます。新しい値をappend内部のポインターに割り当てるfunction()と、関数の外部で通知されることは何も起こりません。

あなたが何をしようとしているのかはあまり明確ではありません...定数データのポイントは、もちろん、あなたがそれを変更することになっていないということです。

于 2012-05-28T09:51:05.240 に答える
0

パラメータの名前がmainの変数と同じであるのは偶然の一致です。名前の間に関係はありません。

あなたの関数はそれがそうであったかのように同じように機能します

int function(char *x, const char *y)
{
 y = x; //changing the location of y.
 printf ("%s\n", y); //displays as sachintendulkar.
}

その関数がmain内の値を変更することは期待できません。

于 2012-05-28T15:24:22.697 に答える