高频工数软件微机基础1010第四章_第1页
高频工数软件微机基础1010第四章_第2页
高频工数软件微机基础1010第四章_第3页
高频工数软件微机基础1010第四章_第4页
高频工数软件微机基础1010第四章_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章C long b1or11,2or21or22,4or42or44or8※变量变量是指存取内存单元中的值(数据)。在内存的总是二进制数据,也是变不同的数据类型转换为输出格式。(可参阅第205页的附录A:ASCII字符集)4-1.1char printf(“c(dec)=%d,c(char)=%c\n”,c,c);c(dec)=65,【例char char a=b=0xFF; printf(“a=%d,\tb=%d\n”,a,b);得a=- b= sizeof来测试内存单元所占的字节数。例如,定义int变量a:inta=-但是其空间可能占1个、2个或者4个字节。测试方法是使用打印语句如下:printf(“sizeof(int)=%d\n”,sizeof(int)); printf(“sizeof(int)=%d\n”,sizeof(a));124,inti1,i2;floatf=i1+ i2=f* (1)f=i1+i2 (2)i2=f*i1 例如,定义inti=1;则i/3*30,而(float)i/3*3又如,定义inti1=3float则i2=a* 遵循显式转换:i2为i2int)a* i2a* 类型*变量; *pa,*pb;float*pc; *pa,针,而pb定义为变量,并没有定义为指针。unsignedlong(4个字节)。因此所谓的指针类型实际上是指其目标的数据类型,根据其类型char short long long,占4个字节。指针pa(4字节)指针pb(4字节)

long*型指针目标(4字节 *pa 指针变量pa 指针变量 pa的目标是a。指 指向目 指针pa指向变量例如: pa

pa=

ab[3*pa pa a pb *pb= =地? FF50?

pa=

FF50a=??

pb=&b[1*pb=4567; 4567程序中定义的变量,无论是动态变量还是静态变量,其单元都有相应的地址(位于用户数据区)。除此之外,在计算机系统中还提供了可以在程序运行过程中动态申请的malloc的功能是向系统申请size个字节数的单元。如果系统中存在着这样大小的单元,将返回一个非零值,表示该单元已为用户进程所有。malloc()char*,例如,定义short*pa;int pa=(short*)malloc(sizeof(short)); pb=(int if((pa=(int*)malloc(sizeof(int)))==NULL)

*pa=“buserrorcoredump”fragmentationviolation”,虽然用释放动态单元后,指针ptr的目标已,但ptr的值不变,这时若还要访则释放时应该为“(pb);”pb0D50,形如“(pb[1]);”是错误的(因为pb[1]的值为0D52)。4.2.4目取址符&的作用是获得变量的地址,如&x表示变量x的地址。inta,b,*pa;a=pa printf(”%dd\n”a b= bprintf(”%d,%d,%d\n”,a,b,5,5,5,int*pc,i,n=4;pc=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)*(pc+i)=i+printf(“%d,%d\n”,pc[0],其中,*(pc+i)等价于pc[i],通常我们愿意使用pc[i]的形式,即数组元素的形式。由指针指向的这种地址连续的单元并不是C语言定义的数组,但是具有数组的特性。由于它们1,赋值:*(pc+i)赋值:*(pc+i)=i+1234 字符 s0[7]={‘D’,‘o’,‘□’,‘i’,‘t’,‘!’,

Do□it!Do□it!char*s,*t,s=(char*)malloc(sizeof(char)*7);u=(char*)malloc(sizeof(char)*7);strcpy(s,”Doit!”);t=s;strcpy(u,sDo□Do□it!

首地址Do□itDo□it!利用strcpy和strcat等函数将字符串 函数strcpy(dst,src)的功能是将src 到dst。例如,定义chars1[7];可有strcpy(s1,”Dostrcat(s1,”t!Dstrcpy(s1,“DoDo□ Do□ichars2[7];s2[0]=s2[1]=s2[6]=chars3[7]=“Do{

strcat(s1,Do□it!t!!!ttDo□it! !!ttDo□it! □ !Do□it!Do□it!Do□it!Do□it!char*t,*u,t=(char u=(char*)malloc(sizeof(char)*(strlen(" v=(char*)malloc(sizeof(char)*strlen("he"));strcpy(t,"oyou");strcpy(u,"ostrcpy(v," oyou");printf("t=[%X]\tu=[%X]\tv=[%X]\n",t,u,v);} ou=[o o{chars0[6],s1[4],s2[2];strcpy(s0," printf("len=%d\ts0=[%s]\n",strlen(" strcpy(s2," oyou");printf("s0=[%X],s1=[%X],s2=[%X]\n",s0,s1,printf("s0=[%s],s1=[%s],s2=[%s]\n",s0,s1,}在VC++的环境下,运行结果为: s0=[u],s1=[oyou],s2=[ointinta= pa pa=a;a[1]=则a+1,&a[1],pa+1,&pa[1] (a+1),a[1],*(pa+1),pa[1] 均为15 1000数值: 地址: 数组形 chars[ 或指针形 charchars[];{inti=0;

charschar*s;while(s[i]!=‘\0’)charwhile(s[i]!=‘\0’)}char*s;{

char*s;while(s[i]!=‘\0’)for(i=0;*s!=’\0’;while(s[i]!=‘\0’)}函数名:char*strcpy(dst数组形 charsrc[],dst[ 或 (2)指针形 char*src,src[

charssrc[],

char*src, dst[

dst中,包括

src

到dst

while(dst[i]=src[i]while(dst[i]=src[i]while((dst[i]=src[i])!=dst[i]=while(src[i]!=‘\0’char*strcpy(dst,chardst[],intdst[i]=dst[i]=while(src[i]!=char*strcpy(dst,src)chardst[],src[];{intwhile(dst[i]=src[i])}char*strcpy(dst,src)char*dst,*src;{char*d={}*dst=*dst=while(*src!= ile(*src!=d while(*dst=charchar*strcpy(dst,src)char*dst,*src;char*d=dst;while(*dst++=*src++) while(*dst=*src }r dst++;}rc; while(*dst++= } a[3],b[3][2],*c,**d, 数组 二维数组b[3][2]cc目标类型:shortd目标类型:shortd假设通过以下语句动态申请内存(R3Cc=(short*)malloc(size(short)*d=(short**)malloc(size(short*)*R);for(i=0;i<R;i++){

d[i]=(short*)malloc(size(short)*C);e[i]=(short*)malloc(size(short)*}数组二维数 指针动态数组二级动态数组动态数 cd cd数组sizeof(shortx36sizeof(shortx3sizeof(short*6410/x3x212sizeof(short)x3x+sizeof(short*)x+sizeof(short1212428sizeof(short)x3x+sizeof(short*)x=12+24行元素地址#include<stdio.h>#include<string.h>/*lookupstringinKeywordandreturnitsindex*/lookup(string)char{intif(strcmp(string,Keyword[i])==0)return(i);}{shortid; /*keywordindex*/charstring[BUFSIZE]; /*inputstring*/printf("Enterastring:");{id=(short)lookup(string);if(id!=-1)printf("IDof[%s]is%d\n",string,printf("string'%s'isnotakeyword\n",printf("Enterastring:}}考虑采用二维数组城市之间的运费。假如已知共有7各城市,可建立一个二维数组abcdef040465 404020 040030

400005 623004 500540 004625 #defineN7shortvoid{intr, /*r:row,

040465 404020for(r=0;r<N;c040030{d400005scanf("%s",e623004for(c=0;c<N;f500540g004025}}void{intr,c; /*r:row,c:column*/charsrc[10],dst[10];printf("Inputsourcecityanddestinationcity:\t");scanf("%s%s",&src,&dst); /*无效的发货城市或者收货城 /*存在公路,输出运费 printf("costfrom%sto%sis%d\n",src,dst,cost[r][c]); /*不存在公路,无法直接运货 printf("nohighwayfrom%sto%s!\n",src,dst);} intindex(char{intr; /*r:row,c:column*/for(r=0;r<N;r++)} {

} argc;char

$tryIam argc;char指针数组argv[]tryIamABCtry.c的内容为:intargc;char{

tryItryIamABCintfor(i=0;i<argc;{printf(“argv[%d]=%s\t”,i,argv[i]);printf(“argv[%d][0]:<%c>\n”,i,argv[i][0]);}}通过编译生成可执行文件try。在命令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论