// 10 :
float **ptrarray = new float* [2]; //
for (int count = 0; count < 2; count++)
ptrarray[count] = new float [5]; //
// ptrarray float
float **ptrarray, float* [2], . for 2 . ptrarray[2][5]. .
// :
for (int count = 0; count < 2; count++)
delete [] ptrarray[count];
// 2
:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main()
{
int *a; //
int i, j, n, m;
system("chcp 1251");
system("cls");
printf(" : ");
scanf("%d", &n);
printf(" : ");
scanf("%d", &m);
//
a = (int*) malloc(n*m*sizeof(int));
//
for(i=0; i<n; i++) //
{
for(j=0; j<m; j++) //
{
printf("a[%d][%d] = ", i, j);
scanf("%d", (a+i*m+j));
}
}
//
for(i=0; i<n; i++) //
{
for(j=0; j<m; j++) //
{
printf("%5d ", *(a+i*m+j)); // 5
}
printf("\n");
}
free(a);
getchar(); getchar();
}
: 3
: 4
a[0][0]=1
a[0][1]=2
a[0][2]=3
a[0][3]=4
a[1][0]=5
a[1][1]=6
a[1][2]=7
a[1][3]=8
a[2][0]=9
a[2][1]=10
a[2][2]=11
a[2][3]=12
1 2 3 4
5 6 7 8
9 10 11 12
- . :
- ;
- , ;
- .
malloc() size, . , .
:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main()
{
int **a; //
int i, j, n, m;
system("chcp 1251");
system("cls");
printf(" : ");
scanf("%d", &n);
|
|
printf(" : ");
scanf("%d", &m);
//
a = (int**)malloc(n*sizeof(int*));
//
for(i=0; i<n; i++) //
{
//
a[i] = (int*)malloc(m*sizeof(int));
for(j=0; j<m; j++) //
{
printf("a[%d][%d] = ", i, j);
scanf("%d", &a[i][j]);
}
}
//
for(i=0; i<n; i++) //
{
for(j=0; j<m; j++) //
{
printf("%5d ", a[i][j]); // 5
}
printf("\n");
free(a[i]); //
}
free(a);
getchar(); getchar();
}
.
. (), . , . .
.
, , . , .
:
, ( ).
, ( ).
;
;
, . () :
[near|far] * [=];
, . , :
( NULL);
;
( );
, ;
, .
:
#include <stdio.h>
int main()
{
int var; //
int *ptrVar; // (ptrVar int, int)
ptrVar = &var; // , var
scanf("%d", &var); // var ,
printf("%d\n", *ptrVar); //
getchar();
}
: 6 6
3.
.
, . . , , .
|
|
:
1. ;
2. ;
3. .
, , . :
( );
, .
, : , . :
( )
:
int func(int i, double x, double y)
void func(int ind, char *string)
double func(void)
-, , . ( ) .
:
.
double factorial(unsigned);
...
double factorial(unsigned num)
{
double fact = 1.0;
for(unsigned i=1;i<=num;i++)
fact *= (double)i;
return fact;
}
.
. .
:
struct [ ]
{
_1;
_2;
...
_N;
} [ ];
. , .
.
- . ( Ȼ):
;
.
:
1. .
2. .
3. .
:
1. .
2. .
3. .
4.
r | |
w | . , . |
a | : , . |
r+ | ( ). |
w+ | ( ), , . |
a+ | . |
FILE * freopen(const char *filename, const char *mode, FILE *stream);
:
,
NULL .
int fclose(FILE *stream);
stream - .
:
0 .
1 .
int feof(FILE *stream);
stream - .
:
0 .
!0 .
t ():
rt, wt, at, rt+, wt+, at+
|
|
int fscanf(FILE *stream, const char * format, [arg]...);
:
>0 ,
0 ,
EOF .
char * fgets(char * buffer, int maxlen, FILE *stream);
:
buffer ,
NULL .
char * fgets(char * buffer, int maxlen, FILE *stream);
:
buffer ,
NULL .
int fgetc(FILE *stream);
:
,
EOF .
int ungetc(int c, FILE *stream);
:
,
EOF .
int fprintf(FILE *stream, const char *format, [arg]...);
:
,
.
int fputs(const char *string, FILE *stream);
:
,
EOF .
int fputc(int c, FILE *stream);
:
,
EOF .
b ():rb, wb, ab, rb+, wb+, ab+
size_t fread(void *buffer, size_t size, size_t num,FILE *stream);
. num,
.
size_t fwrite(const void *buffer, size_t size, size_t num, FILE *stream);
. num, .
:
long int ftell(FILE *stream);
:
int fseek(FILE *stream, long int offset, int origin);
SEEK_SET (0) .
SEEK_CUR (1) .
SEEK_END (2) .
:
0 ,
!0 .
:
void rewind(FILE *stream);
:
int fgetpos(FILE *stream, fpos_t *pos);
:
int fsetpos(FILE *stream, const fpos_t *pos);
:
0 ,
!0 .
fpos_t:
typedef struct fpos_t {
long off;
mbstate_t wstate;
} fpos_t;
:
int ferror(FILE *stream);
, .
:
void clearerr(FILE *stream);
:
void perror(const char *string);
:
int fflush(FILE *stream);
:
0 .
EOF .
:
void setbuf(FILE *stream, char * buffer);
BUFSIZ. .
:
FILE * tmpfile(void);
wb+. , .
:
char * tmpnam(char *buffer);
|
|
:
int remove(const char *filename);
:
int rename(const char *fname, const char *nname);
:
0 ,
!0 .
4.
.
(stack) , " " (last-in, first-out, LIFO). , . , , , , . , .
. " " (push) " " (pop). : push(), "" , pop(), "" . , . , . , , - . push() pop(), . , .
int stack[MAX];
int tos=0; /* */
/* . */
void push(int i)
{
if(tos >= MAX) {
printf(" \n");
return;
}
stack[tos] = i;
tos++;
}
/* . */
int pop(void)
{
tos--;
if(tos < 0) {
printf(" \n");
return 0;
}
return stack[tos];
}
tos ("top of stack" " ") . , . tos , tos, - .
.
push(A) | A |
push(B) | |
push(C) | C B A |
() | |
push(F) | F |
() F | |
() | |
() |
, . , , .
:
/* . */
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int *p; /* */
int *tos; /* */
int *bos; /* */
void push(int i);
int pop(void);
int main(void)
{
int a, b;
char s[80];
p = (int *) malloc(MAX*sizeof(int)); /* */
if(!p) {
printf(" \n");
exit(1);
}
tos = p;
bos = p + MAX-1;
printf(" \n");
printf(" 'q' \n");
do {
printf(": ");
gets(s);
switch(*s) {
case '+':
a = pop();
b = pop();
printf("%d\n", a+b);
push(a+b);
break;
case '-':
a = pop();
b = pop();
printf("%d\n", b-a);
push(b-a);
break;
case '*':
a = pop();
b = pop();
printf("%d\n", b*a);
push(b*a);
break;
case '/':
a = pop();
b = pop();
if(a==0) {
printf(" 0.\n");
break;
}
printf("%d\n", b/a);
push(b/a);
break;
case '.': /* */
a = pop();
push(a);
printf(" : %d\n", a);
break;
default:
push(atoi(s));
}
} while(*s!= 'q');
return 0;
}
/* . */
void push(int i)
{
if(p > bos) {
printf(" \n");
return;
}
*p = i;
p++;
}
/* . */
int pop(void)
{
p--;
if(p < tos) {
|
|
printf(" \n");
return 0;
}
return *p;
}
.
, " " (first-in, first-out); ( ) FIFO. , , .. ; .
, : qstore() qretrieve() ( "store" "", "retrieve" ""). qstore() , qretrieve() . .
qstore(A) | A |
qstore(B) | |
qstore(C) | A B C |
qretrieve() | |
qstore(D) | B C D |
qretrieve() | C D |
qretrieve() | D |
, , - . .
. . /.
:
/* - */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define MAX 100
char *p[MAX], *qretrieve(void);
int spos = 0;
int rpos = 0;
void enter(void), qstore(char *q), review(void), delete_ap(void);
int main(void)
{
char s[80];
register int t;
for(t=0; t < MAX; ++t) p[t] = NULL; /*
*/
for(;;) {
printf(" (E), (L), (R), (Q): ");
gets(s);
*s = toupper(*s);
switch(*s) {
case 'E':
enter();
break;
case 'L':
review();
break;
case 'R':
delete_ap();
break;
case 'Q':
exit(0);
}
}
return 0;
}
/* . */
void enter(void)
{
char s[256], *p;
do {
printf(" %d: ", spos+1);
gets(s);
if(*s==0) break; /* */
p = (char *) malloc(strlen(s)+1);
if(!p) {
printf(" .\n");
return;
}
strcpy(p, s);
if(*s) qstore(p);
} while(*s);
}
/* . */
void review(void)
{
register int t;
for(t=rpos; t < spos; ++t)
printf("%d. %s\n", t+1, p[t]);
}
/* . */
void delete_ap(void)
{
char *p;
if((p=qretrieve())==NULL) return;
printf("%s\n", p);
}
/* . */
void qstore(char *q)
{
if(spos==MAX) {
printf("List Full\n");
return;
}
p[spos] = q;
spos++;
}
/* . */
char *qretrieve(void)
{
if(rpos==spos) {
printf(" .\n");
return NULL;
}
rpos++;
return p[rpos-1];
}
.
, :
struct s{
int data;//
s *next;//
} *first,*curr;//
:
first=new s;
curr=new s;
first->next=curr;
first->data
: curr->next=new s;
curr=curr->next;//
50 :
curr=first;//
for(int i=0;i<50;i++)
{
if(curr->next!=NULL)
{
curr=curr->next;
}
}