当前位置:文档之家› C语言程序设计课件4

C语言程序设计课件4

int a[3][4],*p,i=1,j; for(j=0;j<3;j++) {
for(p=a[j];p<a[j]+4;p++,i++) {
*p = i;
多维数组与指针(程序一)
} } for(j=0;j<3;j++) { for(p=a[j];p<a[j]+4;p++,i++) { printf("%3d",*p); } printf("\n"); } system("pause");}
字符串和指针(程序二)
利用指针实现两个字符串的连接 #include <stdlib.h> #include <stdio.h> main() {
char *p1,*p2,a[20],b[20],c[20]; printf("请输入两个要合并的字符串:\n"); gets(a); gets(b); p1=a;
多维数组与指针
多维数组还可以用另外的方法来定义和 表示:
如: int a[2][3] = {(1,2,3),(4,5,6)}; int (*p)[3]; 它指向包含三个整形元素的一维
数组,注意,*p两侧的括号不可以缺少 另外,在引用这些数组的时候,一
般用*(*(p+i)+j),不能够写成* ((p+i)+j)
main() {
char *p1,*p2; char a[20],b[20]; printf("please input 1 string:\n"); gets(a); p1=a; p2=b; fuzhi(p1,p2); printf("复制后的内容为:\n%s\n",b); system("pause");}
*p2=*p1; } *p2='\0'; p2=b; printf("b字符数组的输出结果为:\n"); printf("%s \n",p2);
字符串和指针(程序一)
/*while(*p2!='\0') { printf("%c",*p2); p2++; } */ system("pause"); }
多维数组与指针
其中*(*(p+i)+j)表示的是第I行第j列的 元素的值。
如果写成了*((p+i)+j)则表示第 (I+j)行的第一个元素的地址
以上两种写法得到的结果截然不同, 因此使用时要注意
字符串和指针
字符串的表示形式: 1.用字符数组存放一个字符串,然后输 出该字符串 2.用字符指针指向一个字符串
采用此方法时无须定义字符数组,可 以直接定义字符指针指向字符串中的字 符
字符串和指针
字符指针指向一个字符串的定义方法: char * string = “hello China!” 注意:
在上述定义中,它等价于 char *string; string = “hello China!”
是将字符串“hello China”的首地址赋值给指 针变量string,而非将该字符串每个元素赋值 给string(string不是字符串数组)
多维数组与指针
在上述二维数组中,每个元素用指 针的表示形式为:
*(a[i]+j); 其中a[i]表示二维数组第I行的起始地址 j是二维数组第j列的偏移,所以a[i]+j表 示的就是元素a[i][j]的地址,而*(a[i]+j) 就表示该元素的值
多维数组与指针(程序一)
#include <stdio.h> #include <stdlib.h> ma
多维数组与指针
用指针可以指向一维数组,同样也 可以指向多维数组中的元素 1.二维数组元素的地址
可以将二维数组理解为“数组的数组” 例如:
int a[2][3]={(1,2,3),(4,5,6)}; 可以理解成为两个一维数组,每个 数组由三个元素组成
多维数组与指针
两个一维数组的起始地址分别是: 第一行元素的起始地址:a[0]; 第二行元素的起始地址:a[1]; 注意:在二维数组中,a[0],a[1]所表示 的并不是一个元素,而是每行的第一个 元素的地址
字符串和指针
• 用字符串指针作为函数的参数 将一个字符串从一个函数传递到另一
个函数,可以用地址传递的办法(填入 字符数组名),也可以用指向字符的指 针变量做参数
例如: void fuzhi(char str1[],char str2[]) void fuzhi(char *p1,char *p2)
字符串和指针(程序二)
p2=c; for(;*p1!='\0';p1++,p2++) { *p2=*p1; } for(p1=b;*p1!='\0';p1++,p2++) { *p2=*p1; } *p2='\0';
字符串和指针(程序二)
p2=c; printf("合并后的字符串为: %s\n",p2); system("pause"); }
字符串和指针
#include <stdio.h> #include <stdlib.h> main() { char *str1="hello China!"; printf("%s\n",str1); system("pause"); }
字符串和指针(程序一)
通过指针指向字符数组,进行字符串复制
#include <stdio.h> #include <stdlib.h> main() { char a[20],b[20]; char *p1,*p2; p1=a; p2=b; printf("please input a string:\n"); gets(a);
字符串和指针(程序一)
for(;*p1!='\0';p1++,p2++) {
字符串和指针
通过字符指针传递参数实现字符串复制
#include <stdio.h> #include <stdlib.h> void fuzhi(char *p1,char *p2) { for(;*p1!='\0';p1++,p2++) {
*p2=*p1; } *p2='\0'; }
字符串和指针
感 谢
相关主题