[c]関数引数の値を変更したい。 2008/11/06
2008/11/07

Cです。
Cでは、関数に対して引数を値で渡すので、呼ばれた関数で、呼びもとの関数内の値を直接変えることができません。
と、K&Rで書いてありまして、K&Rではswap関数の書き方がのっていました。目的の効果を得るために、演算子&を使って関数に値を渡し、渡されたほうでは間接演算子*を使う。

お試し用のコードなので実用的ではない。
むしろ危険かも。

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

void func(char* c){
char* b = "abcdefg";
*c = b;
fprintf(stdout, "func address:%p ->%s\n", b, b);
fprintf(stdout, "func address:%p ->%s\n", c, c);
}


int main(void) {

char* c = "test";
fprintf(stdout, "main address:%p ->%s\n", c, c);
func( &c );
fprintf(stdout, "main address:%p ->%s\n", c, c);

return EXIT_SUCCESS;
}


結果例
main address:0x1fe4 ->test
func address:0x1fc6 ->abcdefg
func address:0xbffffa9c ->�
main address:0x1fc6 ->abcdefg


ああ、ポインタぁ。

: