きったんの頭ん中☆
C/C++ メモ
Hello World
hello.c
#include <stdio.h>
int main () {
printf("Hello World!\n");
return 0;
}
$ gcc -o hello hello.c
$ ./hello
Hello World!
hello.cc
#include <iostream>
using namespace std;
int main () {
cout << "Hello World!" << endl;
return 0;
}
実行 (g++)
$ g++ -o hello hello.cc
$ ./hello
Hello World!
make
# Makefile_hello for windows
CC = gcc
RM = del
CFLAGS = -g -W -Wall
TARGET = hello.exe
OBJS = hello.o
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) -o $@ $(OBJS)
clean:
-$(RM) $(TARGET) $(OBJS)
.c.o:
$(CC) $(CFLAGS) -c $<
hello.o:
$ make -f Makefile_hello
コマンドライン引数
// cmdl.c
#include <stdio.h>
int main (int argc, char **argv) {
int i;
for (i = 0; i < argc; i++) {
printf("%d\t%s\n", i, argv[i]);
}
return 0;
}
$ gcc -o cmdl cmdl.c
$ ./cmdl a b c
0 cmdl
1 a
2 b
3 c
予約語
- asm
- auto
- bad_typeid
- class
- delete
- enum
- except
- explicit
- extern
- inline
- mutable
- namespace
- new
- operator
- register
- sizeof
- struct
- template
- this
- type_info
- typedef
- typeid
- typename
- union
- using
- virtual
- xalloc
制御
- break
- catch
- case
- continue
- default
- do
- else
- finally
- for
- goto
- if
- return
- switch
- throw
- try
- while
アクセス制御
- private
- protected
- public
- friend
コメントアウト
データ型
- void
- char
- short
- int
- long
- bool
- float
- double
- wchar_t
- signed
- unsigned
修飾子
型変換
- bad_cast
- const_cast
- dynamic_cast
- reinterpret_cast
- static_cast
boolean
数値
- 37 //int
- 043 //octal
- 0x25 //hexadecimal
- 37u //unsigned int
- 37l //long
- 3.7e1 //3.7 x 10^1
配列
// 初期化
int a[2];
int b[] = {1,2}; //b[0] = 1, b[1] = 2
// 動的配列 (C++)
int length = 7;
int *arr;
arr = new int[length];
if (!arr) {
std::cerr << "memory error" << std::endl;
abort();
}
delete [] arr;
// 動的配列 (C)
#include <stdlib.h>
int *arr;
arr = (int*)malloc(7);
if (arr == NULL) {
fprintf(stderr, "memory error\n");
exit(EXIT_FAILURE);
}
free(arr);
プリプロセッサ
- #
- ##
- #define
- #elif
- #else
- #endif
- #if
- #ifdef
- #ifndef
- #include
- #undef
#if defined(MACRO_A) || defined(MACRO_B)
/* A or B */
#elif !defined(MACRO_C) && defined(MACRO_D)
/* not C and D */
#endif
ディレクティブ - MoonWing
マクロ
#define PI 3.14
#define MAX(a,b) ((a)>(b)?(a):(b))
事前定義マクロ
- __FILE__
- __LINE__
- __DATE__
- __TIME__
- __STDC__
テンプレート
template<class T>
struct float_trait {
typedef T T_float;
};
template<>
struct float_trait<char> {
typedef double T_float;
};
template<class T>
typename float_trait<T>::T_float average(const T* data, int length) {
T sum = 0;
for (int i = 0; i < length; ++i)
sum += data[i];
return sum / length;
}
ファイル操作
読み込み
#include <fstream>
#include <iostream>
using namespace std;
int main() {
char c;
ifstream ifs("test.txt");
while (ifs.get(c)) {
cout << c;
}
cout << endl;
return 0;
}
書き込み
#include <fstream>
using namespace std;
int main()
{
ofstream ofs;
ofs.open("test.txt", ios::out | ios::app);
ofs << "testmessage" << endl;
ofs.close();
return 0;
}
リンク
開発環境
ライブラリ/ツール
数学
入門/解説