プログラム言語 変数

エスケープ

頭に「\」を付ける
\' シングルクォーテーション
\" ダブルクォーテーション
\\ \記号
\n 改行
\r リターン
\b バックスペース
\t 水平タブ
\0 NULL文字を表す
C#と同じ(頭に「\」を付ける)
C#と同じ(頭に「\」を付ける)

特殊機能
\l # 次の1文字を小文字にする
\u # 次の1文字を大文字にする
\L # \Eまでの文字列を小文字にする
\U # \Eまでの文字列を大文字にする
\E # \Lや\Uを終了させる

特にPerlでは以下の文字についてもエスケープが必要(正規表現利用の為)
*
+
.
?
{
}
(
)
[
]
^
$

|
/

「'」のエスケープ
my $s = ' Let's Play! ' , '\n' # ⇒ NG

エスケープ文字「\」を使用
my $s = ' Let\'s Play! ' , '\n' # ⇒ OK

q/ 文字列 /を使用
my $s = q/ Let's Play! / , '\n' # ⇒ OK

外側に「"」を使用
my $s = " Let's Play! " , "\n" # ⇒ OK

値渡し・参照渡し

public void myForm_Load(object sender, EventArgs e)
{
  int a = 10;
  int b = 10;
  int c = 10;
  SubRoutine(prmA: a, ref refB: b, outC: out c);

  MessageBox.Show(text: a.ToString()); ⇒10(値渡し)
  MessageBox.Show(text: b.ToString()); ⇒100(参照渡し)
  MessageBox.Show(text: c.ToString()); ⇒1000(参照渡し)
}

private void SubRoutine(int prmA, ref int refB, out int outC)
{
  prmA *= 10;
  refB *= 10;

  //outはサブルーチン内で必ず初期化しなければならない
  int d = outC; outCに値を入れる前に処理しているので×
  outC *= 10; 同じく×
  outC = 1000; OK(outCは参照渡し)
}

値渡し
int v = 10;
fnFunc(v);
→v:10

void fnFunc(int p)
{
 引数受け取り時の処理
 vの値を格納
 p = v

 
 p += 1;
 v:10
 
 cout << p << '\n';
 →11
 return;
}

ポインタ渡し
プログラム言語 ポインタ/関数への参照渡しポインタ渡し」参照

参照渡し
プログラム言語 ポインタ/関数への参照渡しポインタ渡し」参照

Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

  Dim a As Integer = 10
  Dim b As Integer = 10
  Dim c As Integer = 10
  Call SubRoutine(prmA:=a, prmB:=b, refC:=c)

  MessageBox.Show(text:=a.ToString()) ⇒10(値渡し)
  MessageBox.Show(text:=b.ToString()) ⇒10(値渡し)
  MessageBox.Show(text:=c.ToString()) ⇒100(参照渡し)
End Sub

Private Sub SubRoutine(prmA As Integer, ByVal prmB As Integer, ByRef refC As Integer)
  prmA *= 10
  prmB *= 10
  refC *= 10
End Sub

値渡し、参照渡し用の記述は無い
渡す変数が基本型(プリミティブ型)の場合は値渡し、
参照型の場合は参照渡しになる。
データ型」参照

値渡し
void method(int num){
 num += 10;
 System.out.println(num);
 ⇒20
}

int num = 10;
obj.method(num);
System.out.println(num);
⇒10
※値渡しされている

参照渡し
void method(int[] num){
 num[0] += 10;
 System.out.println(num);
 ⇒20
}

int[] num = {10};
obj.method(num);
System.out.println(num[0]);
⇒20
※参照渡しされている

クラスを引数として渡す場合
クラス変数を引数として渡す場合
public class MyClass {
  private int myInt;
  public MyClass(int prm)
  {
    this.setMyInt(prm);
  }
  public int getMyInt() {
    return this.myInt;
  }
  public void setMyInt(int myInt) {
    this.myInt = myInt;
  }
}

public static void main(String[] args) {
  
  MyClass m = new MyClass(10);
  // m.myInt : 10
  
  myFunc(m);
  // m.myInt : 15
  // クラスは参照型なので参照渡し

  
  myFunc(m.getMyInt());
  // m.myInt : 15
  // クラスは参照型でも、インスタンス変数はプリミティブ型なので値渡し

}

private static void myFunc(int prm)
{
  prm += 5;
}

private static void myFunc(MyClass prm)
{
  prm.setMyInt(prm.getMyInt() + 5);
}

値渡し
myfunc(&$prm);

参照渡し
myfunc(&$prm);

function myfunc($prm) {
 ~
}

参照渡し
my $x = 5;
a(\$x);
print $x, "\n";
⇒ $x : 50;

sub a {
  my $ref = shift;
  $$ref *= 10;
}

値渡し
my $x = 5;
b($x);
print $x, "\n";
⇒ $x : 5;

sub b {
  my $val = shift;
  $val *= 10;
}

変数名

命名規則
・予約語(if、class等)は使えない。
・数字から初めてはいけない。
・記号は「_」、通貨記号(「¥」,「$」,「£」,「€」等)のみ