二级C语言考试辅导教程第六章:指针[4]

二级C语言考试辅导教程第六章:指针[4],第1张

二级C语言考试辅导教程第六章:指针[4],第2张

二。多维数组的指针变量
将二维数组A分解成一维数组A [0]、A [1]和A [2]后,设P为指向二维数组的指针变量。可以定义为:int (*p)[4]表示p为指针变量,指向二维数组A或第一个一维数组a[0],其值等于A,a[0],或&a[0][0]等。而p+i指向一维数组a[i]。从前面的分析可以得出,*(p+i)+j是二维数组第I行第J列元素的地址,而*(*(p+i)+j)是第I行第J列元素的值。

二维数组指针变量描述的一般形式是:类型说明符(*指针变量名称)[length]其中“类型说明符”是索引组的数据类型。“*”表示后面的变量是指针类型。“长度”是指二维数组分解成多个一维数组时,一维数组的长度,即二维数组的列数。注意“(*指针变量名)”两边的括号必不可少。如果缺少括号,则表示指针数组(本章后面会介绍),意义完全不同。来源:www.examda.com
[explain]main(){
static int a[3][4]= { 0,1,2,3,4,5,6,7,8,9,10,11 };
int(* p)[4];
int i,j;
p = a;
for(I = 0;I for(j = 0;J}
'包含的字符串指针变量的描述和使用字符串指针变量的定义与指向字符变量的指针变量相同。只能通过指针变量的赋值来区分。指向字符变量的指针变量应该被赋予字符变量的地址。例如char c,* p = & c;p是一个指针变量,指向字符变量C. And: char *s="C语言";那么S就是一个指向一个字符串的指针变量。给s字符串的第一个地址。资料来源:www.examda.com
请看下面的例子。
main(){
char * PS;
ps="C语言";
printf("%s ",PS);
}
运行结果是:
C语言
在上面的例子中,首先将ps定义为一个字符指针变量,然后将字符串的第一个地址给ps(要将整个字符串写出,以便编译器将字符串加载到一个连续的内存单元中),并将第一个地址发给ps。程序中:char * psps="C语言";相当于:char *ps="C语言";输出字符串中n个字符后的所有字符。
main(){
char *ps= "这是一本书";
int n = 10;
PS = PS+n;
printf("%s\n ",PS);
}
运行结果是:
book在程序中初始化ps的时候,给ps一个字符串的第一个地址。当ps= ps+10时,ps指向字符“B”,因此输出为“book”。
main(){
char st[20],* ps
int I;
printf("输入一个字符串:\ n ");
PS = ST;
scanf("%s ",PS);
for(I = 0;PS[我]!='[3]';i++)
if(PS[I]= = ' k '){
printf("字符串中有个' k ' \ n ");
break;
}
if(PS[I]= = ' \ 0 ')printf("字符串中没有' k ' \ n ");
}
这个例子是为了找出输入字符串中是否有' k '字符。下面的示例将指针变量指向一个格式字符串,该字符串在printf函数中用于输出由二维数组的各种地址表示的值。但是,在printf语句中,格式字符串被指针变量PF替换。这也是程序中常用的方法。
main(){
static int a[3][4]= { 0,1,2,3,4,5,6,7,8,9,10,11 };
char * PF;
PF="%d,%d,%d,%d,% d \ n ";
printf(PF,a,*a,a[0],&a[0],& a[0][0]);
printf(PF,a+1,*(a+1),a[1],&a[1],& a[1][0]);
printf(PF,a+2,*(a+2),a[2],&a[2],& a[2][0]);
printf("%d,%d\n ",a[1]+1,*(a+1)+1);
printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1));
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C语言考试辅导教程第六章:指针[4]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情