- , . , , , .
- , . , , , - .
char*p;
chars[] = 'Ci++';
const char* pc = s; //
pc[3] = 'g;
// :
= ; //
char *const cp = s; // -
[3] = ', //
= ; //: -
const char *const cpc = s;
//
[3] = ''; :
=; //:
.
.
. ,
int (*fp)(int x, int y);
int add(int x, int y)
{ return x + y;}
int sub(int x, int y)
{ return x - y;}
void main()
{
int (*p)(int, int);
p = add;
/* */
printf("1 + 2 = %d\n", (*p)(1, 2));
p = sub;
/* */
printf("1 - 2 = %d\n", p(1, 2));
return 0;
}
12.9. void
: void* ; :
void* ;
void* .
void* .
void* void*;
void* ;
void* ( )
void* :
- ,
- .
, .
.
void swaptmp(int *px, int *py) /* *px *py */
{
//
int temp;
temp = *px;
*px = *py;
*py = temp;
}
void swap(int *px, int *py)
/* *px *py */
{
//
*px ^= *py;
*py ^= *px;
*px ^= *py;
}
int* Revers(int *a, int n)
//
{
int k;
for (int i=0;i<n/2;i++)
{
k=a[i];
a[i]=a[n-i-1];
a[n-i-1]=k;
}
return a;}
int* ReversP(int *a,int n)
{
int k;
for (int i=0;i<n/2;i++)
{
k=*(a+i);
*(a+i)=*(a+n-i-1);
*(a+n-i-1)=k;
}
return a;
}
int* ReversL(int *a,int n)
{
for (int i=0;i<n/2;i++)
{
*(a+i)^=*(a+n-i-1);
*(a+n-i-1)^=*(a+i);
*(a+i)^=*(a+n-i-1);
}
return a;
}
void MoveRight(int * a, int n, int num)
{ // num
for (int i=n; i>=(num+1); i--)
a[i]=a[i-1];
}
|
|
void MoveLeft(int * a,int *n, int num)
{ // c num
for (int i=num; i<*n-1; i++)
a[i]=a[i+1];
*n=*n-1;
}
int* DeleteCh(int *a,int *n, int item)
{
int i=0;
while (i<*n)
{
if (a[i]==item)
{
MoveLeft(a, n, i);
// a=(int*)realloc(a,(*n)*sizeof(int));
i--;
}
i++;
}
return a;}
int* InsertCh(int *a,int *n)
{ int i=0;
while (i<*n)
{
if (a[i]%2==0)
{
a=(int *)realloc(a,(*n+1)*sizeof(int));
MoveRight(a,(*n)++,i+1); //
a[i+1]=a[i];
i++;
}
i++;
}
return a;
}
" " , "" , "". , "" . N-1 (.. , "" . , , , , .
void sort(int *array, int size)
{
register int i, j;
int temp;
for(i = size - 1; i > 0; i--)
{
for(j = 0; j < i; j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return; }
, i- . , : a[0]...a[i] a[i+1]...a[n].
, (i+1)- a[i+1] .
, .
( ), .
void sort(int *array, int size)
{
register int i, j;
int temp;
for(i = 1; i < size; i++)
{
temp = array[i];
for (j = i - 1; j >= 0; j--)
{
if(array[j] < temp)
break;
array[j+1] = array[j];
}
array[j+1] = temp; }}
acc , .
, .
. , , .
, .
void sort(int *array, int size)
{
register int i, j, k; int temp;
for(i = 0, k = 0; i < size - 1; i++, k++)
{
temp = array[i];
for(j = i + 1; j < size; j++)
{
if(temp > array[j])
{
temp = array[j];
k = j;
}
}
temp = array[i];
array[i] = array[k];
array[k] = temp; }
return; }
,
. , , . = N, N . - O (n).
|
|
N .
1. .
2. C .
, 4.
3. , , 2.
4. , , - .
int LineSearch (int *a, int n, int x)
{
for (int i = 0;i<n; i++)
if (a[i] == x)
return i;
return -1; //