연산자 우선순위와 결합순서
연산순위 | 연산자 | 결합순서 |
1 | () [] -> . | → |
2 | ! ~ ++ -- + - (type) * & sizeof | ← |
3 | * / % | → |
4 | + - | → |
5 | << >> | → |
6 | < <= > >= | → |
7 | == != | → |
8 | & | → |
9 | ^ | → |
10 | | | → |
11 | && | → |
12 | || | → |
13 | ? : | ← |
14 | = += -= *= /= %= &= ^= |= <<= >>= | ← |
15 | , | → |
Doubld Pointer
int i = 1000;
int *p =&i;
int **pp = &p;
0x2000 | | 0x3000 | | 0x4000 | |
1000 | i | 0x2000 | p | 0x3000 | pp |
i → 1000 | | p → 0x2000 | | pp → 0x3000 | |
&i → 0x2000 | | &p → 0x3000 | | &pp → 0x4000 | |
| | *p → 1000 | | *pp → 0x2000 | |
| | | | **pp → 1000 | |
Dynamic Allocation in C
void main(int argc, char *argv[])
{
int i;
char **pp;
pp = malloc(5 * sizeof(char*));
if(!pp){perror("Insufficient memory available\n"); return;}
for(i = 0; i < 5; i++)
{
pp[i] = malloc(9);
if(!pp[i]){perror("Insufficient memory available\n"); return;}
}
// ...
for(i = 0; i < 5; i++)free(pp[i]);
free(pp);
}
Dynamic Allocation in C++
void main(int argc, char *argv[])
{
int i;
char **pp;
pp = new char*[5];
for(i = 0; i < 5; i++)pp[i] = new char[9];
// ...
for(i = 0; i < 5; i++)delete[]pp[i];
delete[]pp;
}