1

文字列へのポインタを受け取る関数があります。ここで、このポインターを複製したいので、1 つのポインターを使用して文字列を実行し、文字列の先頭を保存する別のポインターを使用できます。質問が明確であることを願っています。ポインターへのポインターを作成したくありません (最初のポインターが指す場所を指し、それによって変化します)。最初のポインターが指すアドレスを指すポインターが必要です。 .

私はさまざまな方法を試しましたが、どれもうまくいきませんでした。これが私の最新の試みです。「初期化により、キャストなしで整数からポインタが作成されます」

int move_chars (char *str, int start, int end, int dist){
    int strsize = end - start + 1;
    char *p =  *str;
4

3 に答える 3

7

pは typechar *strあり、 typeであるためchar *、次のことを行う必要があります。

char *p = str;

pと同じメモリ位置を指すようにしますstr

あなたのコード:

char *p = *str;

を指すメモリ位置でp最初の値にコピーしようとしましたが、 ではなく別のメモリ位置が必要であるため、エラーが発生します。charstrpchar

あなたのエラーは、「初期化により、キャストなしで整数からポインターが作成される」と言っています。これは、何が起こっているかを示しています。コンパイラは、戻り値を整数としてp使用して、特定のメモリ位置を手動で指していると考えています。char *strこれは技術的には可能ですが、整数を手動でポインターにキャストする必要があります。これは、意図したとおりに実行していることを明確にするためであり、あなたの場合のようなバグではありません。

于 2013-01-18T15:24:15.070 に答える
5

使用する

char *p =  str;

char へのポインターを宣言し、別の char ポインターの値で初期化します。

于 2013-01-18T15:24:07.803 に答える
1
char *p = str

これにより、文字へのポインターが宣言され、 pがstrが指すメモリ位置を指すようになります。

于 2013-01-18T15:43:14.597 に答える