cwnicol programming

プログラミング関連の投稿をすこしだけ

関数内で引数の値変更禁止

構造体を関数にポインタ渡し(参照渡し)して、関数内で

構造体の中を変更して欲しくない時は仮引数の型の前に

constをつければよい。

※構造体でなくても、整数等も同様。

 

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

typedef struct _aaa {
  int a;
}aaa;

void func_a(const aaa* b) {
  b->a = 45;
  return;
}

int main() {
  aaa b;
  func_a(&b);

  printf("%d\n", b.a);
  return 0;
}

 

コンパイル結果】

エラー C2166 左辺値は const オブジェクトに指定されています。