
C身晾叶在线开放课程 指针 一指针与一维数组 主讲:曾志华
指针 ——指针与一维数组 在线开放课程 主讲:曾志华

一.指针与一维数组的关系 CG程设计 例:int a[4]=(1,2,3,4]; int *pa=a; a 0x0037b000 1 a[0] pa 数组名是一个常量指针 0x0037b004 a[1] 不能修改该指针的指向 0x0037b008 3 a[2] 0x0037b00B 4 a[3]
例:int a[4]={1,2,3,4}; 0x0037b000 a[0] 0x0037b004 0x0037b008 0x0037b00B a …. …... 1 int *pa=a; pa 2 3 4 a[1] a[2] a[3] 数组名是一个常量指针 不能修改该指针的指向 一.指针与一维数组的关系

一指针与一维数组的关系 (身程设计 例:int a[4]={1,2,3,4}: int *pa=a; a 0x0037b000 1 a[0] 指针可当数组名使用 pa pa[0] 0x0037b004 2 *(a+1) a[1] a+1 数组元素的等价引用形式 0x0037b008 3 a[i] a[2] pa+2 *(pa+2) *(a+i) pa[i] 0x0037b00B 4 *pa a[3] *(pa+i)
0x0037b000 a[0] 0x0037b004 0x0037b008 0x0037b00B a …. 1 int *pa=a; pa 2 3 4 a[1] a[2] a[3] 数组元素的等价引用形式 a[i] *(a+i) pa[i] *(pa+i) a+1 *(a+1) pa[0] *(pa+2) pa+2 *pa 一.指针与一维数组的关系 指针可当数组名使用 例:int a[4]={1,2,3,4};

一.指针与一维数组的关系 (身序设计 例:int a[4]=(1,2,3,4}: for(i=0;i<4;i++) a scanf("y%d",&a[])月 0x0037b000 1 a[0] p for (i=0;i<4;i++) *p printf("y%d",a叮]); 0x0037b004 2 a[1] *p for(p=a;p<(a+4);p++) 0x0037b008 3 a[2] scanf("%d",p); 0x0037b00B for(p=a;p<(a+4);p++) 4 a[3] printf("%d ",*p) a+4
0x0037b000 a[0] 0x0037b004 0x0037b008 0x0037b00B a …. …... 1 p 2 3 4 a[1] a[2] a[3] for (i=0; i<4; i++) scanf("%d", &a[i]); for (i=0; i<4; i++) printf("%d ", a[i]); for (p=a; p<(a+4); p++) scanf("%d", p); for (p=a; p<(a+4); p++) printf("%d ", *p); *p *p a+4 一.指针与一维数组的关系 例:int a[4]={1,2,3,4};

一.指针与一维数组的关系 程疡设计 例:演示数组元素的引用方法 #include #include int main() 2 int main() 3 int a[5],i; int a[5],i; printf("Input five numbers:"); printf("Input five numbers:") 6 for(i=0;i scanf("号d",&a[i]): 6 scanf("&d" a+1) 9 10 fox(i=0;i<5;i++) 10 fox(i=0;i<5;1++) 11 11 12 printf("%4d" a[i]) 12 printf("%4d" *(a+i)) 13 13 14 printf("\n"); 14 printf("\n"); 15 return 0; 15 return 0; 16 16
例:演示数组元素的引用方法 一.指针与一维数组的关系

一.指针与一维数组的关系 (身程商设计 例:演示数组元素的引用方法 #include #include int main() 2 int main() 4 int a[5],*p NULL,i; int a[5],*p; 5 printf("Input five numbers:") printf("Input five numbers:") p=a; 6 for (p a;p<a+5;p++) for(1=0:1<5:1++) 7 scanf("多d" P) 9 scanf("d", (p[i]) 9 10 10 for (p a;p<a+5;p++) 11 p a; 11 12 fox(i=0:1<5;i++) 12 printf ("4d" 13 14 13 printf("号4d" P[ij) 15 14 printf("\n"); 16 printf ("\n")i 15 return 0; return 0; 16
例:演示数组元素的引用方法 一.指针与一维数组的关系

二.指针变量访问字符串的方法 (程高设计 字符串的存储方式之一: 用字符数组存放一个字符串 #include <stdio.h void main() 字符数组中存放的是字 char string ="China"; 符串中的字符和0 printf("%sn",string);
#include void main() { char string[]=”China”; printf("%s\n",string); } 二.指针变量访问字符串的方法 字符串的存储方式之一: 用字符数组存放一个字符串 字符数组中存放的是字 符串中的字符和‘\0’

二.指针变量访问字符串的方法 程序设计 字符串的存储方式之二: 用字符指针指向字符串 p2460 2460 #include <stdio.h h 2461 void main() 2462 将字符串的首地址 址赋给P,而不是把 2463 char*p="China"; 字符串赋给p a 2464 printf("%sn",p); 0 由于字符串常量实际上也存放在内存 (常量区)中,因此可以让字符指针指 向该常量所在的内存
#include void main() { char* p="China"; printf("%s\n", p); } 二.指针变量访问字符串的方法 字符串的存储方式之二: 用字符指针指向字符串 C h i n a \0 2460 2461 2462 2463 2464 p 2460 将字符串的首地址 址赋给p,而不是把 字符串赋给 p 由于字符串常量实际上也存放在内存 (常量区)中,因此可以让字符指针指 向该常量所在的内存

二.指针变量访问字符串的方法 身程序设计 例:将字符串a复制为字符串b #include <stdio.h void main( 定义字符指针变量 char *a="I am a boy.",b[201 指向字符串 int i; for(i=0:*(a+i)l=0';it+) *(b+i)=*(a+i):一 将字符串a依次复制 *(b+i)=0'; 到字符数组b中 puts(a); puts(b);
#include void main() { char *a = "I am a boy.", b[20]; int i; for (i = 0; *(a+i) != '\0'; i++) *(b+i) = *(a+i); *(b+i) = '\0'; puts(a); puts(b); } 定义字符指针变量 指向字符串 例:将字符串a复制为字符串b 二.指针变量访问字符串的方法 将字符串a依次复制 到字符数组b中