程序片段(01):01.結構體靜態數組.c+02.結構體動態數組.c
內容概要:結構體數組
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct
{
int num;
} *pStruct, structArr[
10], structVar;
struct MyStruct01
{
int id;
char str[
10];
} ms01[
10];
int main01(
void)
{
struct MyStruct01 ms02[
10];
struct MyStruct01 * pMS01 = (
struct MyStruct01[]) {
0 };
struct MyStruct01 ms03[] = { {
10,
"20" },{
10,
"20" },{
10,
"20"} };
struct MyStruct01 * pMS02 = (
struct MyStruct01[]) { {
10,
"20"}, {
10,
"20" }, {
10,
"20" } };
struct MyStruct01 ms04[] = { {
0}, {
0} };
struct MyStruct01 ms05[] = {
0 };
struct MyStruct01 ms06[][
10] = {
0 };system(
"pause");
}
struct CSDN01
{
char name[
100];
char pass[
100];
char email[
100];
} csdnData[
10]
= {{
"zdg",
"12344321",
"zdg@csdn.net"},{
"LaoZheng",
"670203313747",
"chengming_zheng@163.com"},{
"fstao",
"730413",
"fstao@tom.cn"}
}, *pCsdnStruct;
int main02(
void)
{pCsdnStruct = (
struct CSDN01[]) {{
"zdg",
"12344321",
"zdg@csdn.net"},{
"LaoZheng",
"670203313747",
"chengming_zheng@163.com"},{
"fstao",
"730413",
"fstao@tom.com"}};
for (
int i =
0; i <
sizeof(csdnData) /
sizeof(*(csdnData +
0)); ++i){
char * p =
strstr((*(pCsdnStruct + i)).email,
"chengming_zheng@163.com");
if (p){
puts((*(csdnData + i)).pass);}}system(
"pause");
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>struct CSDN01
{
int id;
int num;
};
int main03(
void)
{
int num;
scanf(
"%d", &num);
struct CSDN01 * pStruct01 = (
struct CSDN01 *)alloca(num *
sizeof(
struct CSDN01));
struct CSDN01 * pStruct02 = (
struct CSDN01 *)
malloc(num *
sizeof(
struct CSDN01));
memset(pStruct01,
0,
sizeof(num *
sizeof(
struct CSDN01)));
memset(pStruct02,
0,
sizeof(num *
sizeof(
struct CSDN01)));
for (
int i =
0; i < num; ++i){
printf(
"%d, %d\t%d, %d\n", (*(pStruct01 + i)).id = i, (*(pStruct01 + i)).num = i, (*(pStruct02 + i)).id = i, (*(pStruct02 + i)).num = i);}
for (
int i =
0; i <
10; ++i){
int id =
0;
scanf(
"%d", &id);
for (
int j =
0; j < num; ++j){
if ((*(pStruct01 + i)).id == id){++(*(pStruct01 + i)).num;++(*(pStruct02 + i)).num;
break;}}}
for (
int i =
0; i < num; ++i){
printf(
"%d, %d\t%d, %d \n", (*(pStruct01 + i)).id, (*(pStruct01 + i)).num, (*(pStruct02 + i)).id, (*(pStruct02 + i)).num);}
free(pStruct02);system(
"pause");
}
struct MyStruct01
{
int id;
char str[
10];
};
int main04(
void)
{
int num;
scanf(
"%d", &num);
struct CSDN01 * pCSDNStruct01 = (
struct CSDN01 *)
malloc(num *
sizeof(
struct CSDN01));
struct CSDN01 * pCSDNStruct02 = (
struct CSDN01[]) {
1,
2,
3,
4 };
printf(
"%d \n", (*(pCSDNStruct02 +
1)).id);
printf(
"%d \n", (pCSDNStruct02 +
1)->id);
struct CSDN01 csdnx = {
10,
20 };
struct CSDN01 * pCSDNX = &csdnx;
printf(
"%d \n", (*(pCSDNX)).id);
printf(
"%d \n", pCSDNX->id);system(
"pause");
}
int main05(
void)
{
struct CSDN01 csdnData[
100];
struct CSDN01 * pCSDNStruct = csdnData;
struct CSDN01 csdnDataX[
10][
10];
struct CSDN01(*pArr01)[
10] = csdnDataX;
struct CSDN01(*pArr02)[
10] = (
struct CSDN01(*)[
10])
malloc(
50 *
sizeof(
struct CSDN01));pArr02[
3][
4];system(
"pause");
}
程序片段(02):結構體大小.c
內容概要:結構體大小
#include <stdio.h>
#include <stdlib.h>
struct MyStruct01
{
char chr1;
double db2;
int num3;
char chr4;
double db5;
};
struct MyStruct02
{
double db2;
double db5;
int num3;
char chr1;
char chr4;
};
struct MyStruct03
{
char num1;
};
int main01(
void)
{
struct MyStruct01 ms01;
struct MyStruct02 ms02;
printf(
"sizeof(ms01) = %d \n",
sizeof(ms01));
printf(
"sizeof(ms02) = %d \n",
sizeof(ms02));
printf(
"&ms01 = %p \n", &ms01);
printf(
"&ms01.chr1 = %p \n", &ms01.db2);
printf(
"&ms01.db2 = %p \n", &ms01.db2);
printf(
"&ms01.num3 = %p \n", &ms01.num3);
printf(
"&ms01.chr4 = %p \n", &ms01.chr4);
printf(
"&ms01.db5 = %p \n", &ms01.db5);system(
"pause");
}
程序片段(03):01.Test.c+02.結構體結構體數組副本機制.c+03.指針與結構體.c
內容概要:結構體成員與指針
#include <stdio.h>
#include <stdlib.h>
struct
{
char chr1;
double db2;
int num3;
char chr4;
short num5;
char chr6;
long long num7;
} anonymity01;
struct
{
long long num7;
double db2;
int num3;
short num5;
char chr1;
char chr4;
char chr6;
} anonymity02;
int main01(
void)
{
printf(
"sizeof(anonymity01) = %d \n",
sizeof(anonymity01));
printf(
"sizeof(anonymity02) = %d \n",
sizeof(anonymity02));system(
"pause");
}
#include <stdio.h>
#include <stdlib.h>struct MyStruct01
{
int arr[
10];
int len;
};
void change(
struct MyStruct01 ms01)
{
printf(
"change:ms01.arr = %p \n", ms01.arr);
for (
int i =
0; i < ms01.len; ++i){*((ms01.arr) + i) = i *
3;
printf(
"%3d", *((ms01.arr) + i));}
printf(
"\n");
}
int main02(
void)
{
struct MyStruct01 ms01 = { {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10 },
10 };change(ms01);
printf(
"main:ms01.arr = %p \n", ms01.arr);
for (
int i =
0; i < ms01.len; ++i){
printf(
"%3d", *(ms01.arr + i));}system(
"pause");
}
struct MyStruct01 testReturn()
{
struct MyStruct01 ms01 = { {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10 },
10 };
printf(
"testReturn:ms01.arr = %p;ms01.arr + 1 = %p \n", ms01.arr, ms01.arr +
1);
printf(
"testReturn:&ms01.arr = %p;&ms01.arr + 1 = %p \n", &ms01.arr, &ms01.arr +
1);
return ms01;
}
typedef int * intP;
typedef int intArr[
10];
intP returnUnit(){}
int main03(
void)
{
struct MyStruct01 ms01 = testReturn();
for (
int i =
0; i < ms01.len; ++i){
printf(
"%3d", *(ms01.arr + i));}
printf(
"\n");system(
"pause");
}
struct info
{
char name[
10];
int age;
};
struct info infos[
3];
struct info infos[];
struct info * pInfo;
void changeInfo(
struct info * pInfo)
{(*(pInfo +
1)).age =
88;
}
struct data
{
struct info * pArr;
int len;
};
int main04(
void)
{
struct info infos[
3] = { {
"fang",
18}, {
"hua",
19}, {
"lin",
19} };changeInfo(infos);
for (
int i =
0; i <
3; ++i){
printf(
"%s, %d \n", (*(infos + i)).name, (*(infos + i)).age);}system(
"pause");
}
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>struct Data01
{
int num;
};
int main05(
void)
{
int(*intArr)[
4] = {
0};
printf(
"intArr:%p, intArr+1:%p \n", intArr, intArr +
1);
struct Data01(*pArr)[
10] =
malloc(
90 *
sizeof(
struct Data01));
int k =
0;
for (
int i =
0; i <
9; ++i){
for (
int j =
0; j <
10; ++j){
printf(
"%3d", (*(*(pArr + i) + j)).num = ++k);}
printf(
"\n");}system(
"pause");
}
int main06(
void)
{
struct Data01 **pp;pp = (
struct Data01 **)
malloc(
10 *
sizeof(
struct Data01 *));
int k =
1;
for (
int i =
0; i <
10; ++i){*(pp + i) = (
struct Data01 *)
malloc((i) *
sizeof(
struct Data01));
for (
struct Data01 * pStruct = *(pp + i); pStruct <= *(pp + i) + i; ++pStruct){
printf(
"%3d", (*pStruct).num = k++);}
printf(
"\n");}system(
"pause");
}
int main07(
void)
{
struct Data01 * pStruct = (
struct Data01 *)
malloc(
sizeof(
struct Data01) *
10);
int i =
1;
for (
struct Data01 * pTemp = pStruct; pTemp < pStruct +
10; ++pTemp){
printf(
"%p, %d \n", pTemp, (*pTemp).num = i++);}system(
"pause");
}
程序片段(04):位域.c
內容概要:位域
#include <stdio.h>
#include <stdlib.h>
struct MyStruct01
{
unsigned int a :
5;
unsigned int b :
5;
unsigned int c :
16;
};
int main01(
void)
{
printf(
"sizeof(struct MyStruct01) = %d \n",
sizeof(
struct MyStruct01));
struct MyStruct01 ms1, *pStruct;pStruct = &ms1;ms1.a =
8;ms1.b =
11;ms1.c =
1999;
printf(
"%d ,%d, %d \n", ms1.a, ms1.b, ms1.c);
printf(
"%d, %d ,%d \n", pStruct->a, pStruct->b, pStruct->c);system(
"pause");
}
struct Data01
{
unsigned short num1 :
1;
unsigned short num2 :
2;
};
int main02(
void)
{
printf(
"sizeof(struct Data01) = %d \n",
sizeof(
struct Data01));
struct Data01 data01;data01.num1 =
2;
printf(
"%d \n", data01.num1);system(
"pause");
}
struct Data02
{
unsigned int num1 :
32;
unsigned short num2 :
1;
};
int main03(
void)
{
printf(
"%d \n",
sizeof(
struct Data02));system(
"pause");
}
int isit()
{
unsigned short num =
1;
return (
1 == *(
char *)&num);
}
int main04(
void)
{
short num =
1;
printf(
"&num = %p \n", &num);
printf(
"%d \n", isit());system(
"pause");
}
程序片段(05):顯示整數.c
內容概要:位域編程實戰
#include <stdio.h>
#include <stdlib.h>
struct BitField
{
unsigned char chr1 :
1;
unsigned char chr2 :
1;
unsigned char chr3 :
1;
unsigned char chr4 :
1;
unsigned char chr5 :
1;
unsigned char chr6 :
1;
unsigned char chr7 :
1;
unsigned char chr8 :
1;
};
int main05(
void)
{
printf(
"sizeof(struct BitField) = %d \n",
sizeof(
struct BitField));
int data =
1;
int bitLen =
4;
struct BitField * pBitField = &data;
printf(
"&data = %p \n", &data);
while (bitLen--){
printf(
"%d%d%d%d %d%d%d%d \n",(pBitField + bitLen)->chr8,(pBitField + bitLen)->chr7,(pBitField + bitLen)->chr6,(pBitField + bitLen)->chr5,(pBitField + bitLen)->chr4,(pBitField + bitLen)->chr3,(pBitField + bitLen)->chr2,(pBitField + bitLen)->chr1);}system(
"pause");
}
程序片段(06):Union.c
內容概要:Union
#include <stdio.h>
#include <stdlib.h>
union MyUnion01
{
int num;
double db;
};
int main01(
void)
{
union MyUnion01 mu01;mu01.num =
3;
printf(
"%8d, %lf \n", mu01.num, mu01.db);mu01.num =
0;
printf(
"%8d, %lf \n", mu01.num, mu01.db);system(
"pause");
}
程序片段(07):Union.c
內容概要:Union定義方式
#include <stdio.h>
#include <stdlib.h>union MyUnion01
{
int num;
float fl;
} mu, arr[
3], *p;
union
{
int num;
float fl;
} mu1, arr1[
3], *p1;
int main01(
void)
{
union MyUnion01 mu2, arr2[
3], *p2;mu2.num =
100;
printf(
"%d, %f \n", mu2.num, mu2.fl);
printf(
"%p, %p \n", &(mu2.num), &(mu2.fl));system(
"pause");
}
程序片段(08):對齊.c
內容概要:內存對齊
#include <stdio.h>
#include <stdlib.h>struct MyStruct01
{
char str[
23];
short num;
};
struct MyStruct02
{
struct MyStruct01 ms01;
char chr;
};
int main01(
void)
{
printf(
"sizeof(struct MyStruct02) = %d \n",
sizeof(
struct MyStruct02));system(
"pause");
}
union MyUnion01
{
char str[
13];
int db;
};
int main02(
void)
{
printf(
"sizeof(sruct MyUnion01) = %d \n",
sizeof(
union MyUnion01));system(
"pause");
}
程序片段(09):01.同與不同.c+02.TypeDef.c
內容概要:結構體與共用體的不同
#include <stdio.h>
#include <stdlib.h>struct MyStruct01
{
int num;
double db;
};
union MyUnion01
{
int num;
double db;
};
int main01(
void)
{
struct MyStruct01 ms01, * ps01;
union MyUnion01 mu01, *pu01;
printf(
"%p, %p \n", &ms01.num, &ms01.db);
printf(
"%p, %p \n", &mu01.num, &mu01.db);ps01 = &ms01;pu01 = &mu01;ms01.num;(&ms01)->num;(*&ms01).num;ps01->num;ps01->num;(*ps01).num;mu01.num;(&mu01)->num;(*(&mu01)).num;system(
"pause");
}
#include <stdio.h>
#include <stdlib.h>
typedef struct MyStruct01
{
int num;
double db;
} ms01, ms02;
typedef struct MyStruct01 MS;
typedef union MyUnion01
{
int num;
double db;
} mu01, mu02;
typedef union MyUnion01 MU;
typedef unsigned int num1, num2, num3, num4;
int main02(
void)
{MS my01 = { .num =
10,
10.9 };ms01 my02 = {
11,
11.9 };MU myu01 = {
10 };mu01 myu02 = { .db =
11.9 };ms02 my3 = {
12,
129 };system(
"pause");
}
程序片段(10):PC.c
內容概要:共用體
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct MyStructX
{
double db;
};
union PC
{
struct MyStructX;
int num;
char price[
10];
char * p;} pc01 = { .num =
10000 };
struct MyStruct
{
union PC pc1;
};
int main01(
void)
{
union PC pc02;pc02.p = (
char *)
malloc(
100);
strcpy(pc02.p,
"海華裝的電腦,價格未知!");
union PC pc03 = pc02;pc03.p =
malloc(
100);
strcpy(pc03.p, pc02.p);
printf(
"%s, %s \n", pc02.p, pc03.p);
free(pc02.p);
printf(
"%s, %s \n", pc02.p, pc03.p);system(
"pause");
}
int main02(
void)
{
union PC pc = {
10000 };
union PC arr[
3] = { {
10000},{
10000}, {
10000} };
union PC * p = (
union PC []){ {
10000},{
10000},{
10000} };pc.num++;++pc.num;
printf(
"%d \n", pc.num);system(
"pause");
}
int main03(
void)
{
union PC pc;pc.p = (
char *)
malloc(
100);
strcpy(pc.p,
"海華裝的電腦,價格位置!");pc.num =
4000;
printf(
"%s \n", pc.p);
free(pc.p);system(
"pause");
}
程序片段(11):Data.c
內容概要:數據管理編程
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char str[
1024] =
"521276402----hanlei@19940403 \286738260----WEIPEI559720 \501223616----feng66532008 \851400824----shuidongwo520 \1340382355----huang.512yang \1061817115----fz62wangyong1983 \347232860----20080811 \1028181591----7404850554 \120539543----0.0123456789 \754229005----460228214 \819781633----zmt1993826 \1319148052----YNU1500621032 \904972448----zhouxiaowen.520 \750134133----1292857988 \438905700----320675 \379644978----7758521tao \346083956----devl1017 \562193724----5361a749 \286124126----xuqiang1988 \4008167599----234567 \937350113----MAWENcxn1020 \873589635----qqco1341HUA \853249795----5385939d ";
struct info
{
long long QQ;
char pass[
16];
};
struct infos
{
struct info * pInfo;
int len;
} myInfos;
int getRowNum(
char * pStr)
{
int rows =
0;
for (
char * pTemp =
strstr(pStr,
"----"); NULL != pTemp; pTemp =
strstr(pTemp +
4,
"----")){++rows;}
return rows;
}
void initMem()
{
int len = getRowNum(str);myInfos.pInfo = (
struct info *)
malloc(len *
sizeof(
struct info));myInfos.len = len;
}
void initData(
char * pStr)
{
int len =
strlen(pStr);
for (
char * p = pStr; p < pStr + len; ++p){
if (
' ' == *p){*p =
'\0';}}
for (
char * p = pStr, chr =
0; p < pStr + len; ++p){
char * pTmp = (
char *)
calloc(
strlen(p) +
1,
sizeof(
char));
strcpy(pTmp, p);
char * pWei =
strstr(pTmp,
"----");*pWei =
'\0';
sscanf(pTmp,
"%lld", &(*(myInfos.pInfo + chr)).QQ);
sprintf((*(myInfos.pInfo + chr)).pass,
"%s", pWei +
strlen(
"----"));p +=
strlen(p) +
1;}
}
void showAllData()
{
for (
int i =
0; i < myInfos.len; ++i){
printf(
"QQ = %lld, pass = %s \n", (*(myInfos.pInfo + i)).QQ, (*(myInfos.pInfo + i)).pass);}
}
void showDataStatus()
{
printf(
"還有%d條數據! \n", myInfos.len);
}
void help()
{
printf(
"1.顯示數據 \n");
printf(
"2.刪除數據 \n");
printf(
"3.插入數據 \n");
printf(
"4.修改數據 \n");
printf(
"5.查找數據 \n");
printf(
"6.顯示全部數據 \n");
printf(
"7.對于QQ排序 \n");
printf(
"8.清屏 \n");
printf(
"9.Helop \n");
printf(
"\n");
}
void deleteData(){}
int main01(
void)
{initMem();initData(str);help();
while (
1){
char chr = getch();
switch (chr){
case '1':showDataStatus();
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
case '6':
break;
case '7':
break;
case '8':system(
"cls");
break;
case '9':help();
break;
default:
break;}}system(
"pause");
}
轉載于:https://www.cnblogs.com/niulanshan/p/6174595.html
總結
以上是生活随笔為你收集整理的20160221.CCPP体系详解(0031天)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。