K&Rの名著:<br>ウィジェットまとめ1
2713 ワード
1、文字列sに現れるすべての文字squeeze(char s[],int c)を削除する
2、標準ライブラリ関数strcat(s,t)文字列tを文字列sの末尾に接続する---sに十分な空間があると仮定する
3、関数getbits(x,p,n)は、xの右からp番目から右へn番目のフィールドを返す
4、C言語は判断の大端と小端を実現する.
5、構造体と共同体の違い
a、struct、unionは複数の異なるデータ型メンバーで構成されていますが、同じ時点でunionには選択されたメンバーが1つしか保存されず、structのすべてのメンバーが存在します.structでは、各メンバーが独自のメモリ領域を占有し、同時に存在します.1つのstruct変数の合計長は、すべてのメンバーの長さの和に等しい.Unionでは、すべてのメンバーが同時にメモリ領域を占有することはできません.同時に存在することはできません.Union変数の長さは、最も長いメンバーの長さに等しい.
b、unionの異なるメンバーに対して値を付与すると、他のメンバーに対して書き換えられ、元のメンバーの値は存在せず、structの異なるメンバーに対して値を付与することは互いに影響しない.
6、計算実行プログラムのコンピュータワード長worldlength()
7、bitcount()関数統計x中値1のバイナリビット数
8、折半法(二分法)
void squeeze_test(char str[],int c)
{
int i,j;
for (i=j=0;str[i] !='\0'; i++)
if (str[i] != c)
str[j++]=str[i];
str[j]='\0';
}
2、標準ライブラリ関数strcat(s,t)文字列tを文字列sの末尾に接続する---sに十分な空間があると仮定する
void strcat(char s[], char t[])
{
int i, j;
i=j=0;
while(s[i] !='\0')
i++;
while((s[i++] = t[j++]) != '\0')
;
}
3、関数getbits(x,p,n)は、xの右からp番目から右へn番目のフィールドを返す
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1)) & ~(~0 << n);
}
4、C言語は判断の大端と小端を実現する.
#include<stdio.h>
int check()
{
union check
{
int i;
char ch;
}c;
c.i =1;
return (c.ch == 1);
}
int main()
{
int ret;
ret = check();
if(ret == 0)
{
printf("Big
");
}
else
{
printf("little
");
}
return 0;
}
5、構造体と共同体の違い
a、struct、unionは複数の異なるデータ型メンバーで構成されていますが、同じ時点でunionには選択されたメンバーが1つしか保存されず、structのすべてのメンバーが存在します.structでは、各メンバーが独自のメモリ領域を占有し、同時に存在します.1つのstruct変数の合計長は、すべてのメンバーの長さの和に等しい.Unionでは、すべてのメンバーが同時にメモリ領域を占有することはできません.同時に存在することはできません.Union変数の長さは、最も長いメンバーの長さに等しい.
b、unionの異なるメンバーに対して値を付与すると、他のメンバーに対して書き換えられ、元のメンバーの値は存在せず、structの異なるメンバーに対して値を付与することは互いに影響しない.
6、計算実行プログラムのコンピュータワード長worldlength()
int worldlength(void)
{
int i;
unsigned v = (unsigned)~0;
for (i = 1; (v = v >> 1) >0); i++)
;
return i ;
}
7、bitcount()関数統計x中値1のバイナリビット数
int bitcount(unsigned x)
{
int b;
for (b = 0; x !=0; x>>= 1)
if (x & 01)
b++;
return b;
}
8、折半法(二分法)
/*binsearch ,v */
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n -1;
while ( low <= high) {
mid = (low+high) / 2;
if (x < v[mid])
high = mid -1;
else if
low = mid +1;
else
return mid;
}
return -1;
}