即数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。
(4)如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。 而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值,也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋一个地址值,则它并未具体指向一个确定的字符数据。这很危险。
如: char str[10]; scanf(“%s”,str); 是可以的
char *a;
scanf(“%s”,a); 能运行,但危险,不提倡,在a单元中是一个不可预料的值。应当 char *a,str[10]; a=str; scanf(“%s”,a);
(5)指针变量的值是可以改变的,数组名虽然代表地址,但它的值是不能改变的。可以下标形式引用所指的字符串中的字符。
如:main()
{char *a=“I love China.”;
a=a+7;
printf(“%s”,a); }
又如:char str[]={“I love China.”}; str=str+7; printf(“%s”,str); 是错的
(6)用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。也可以用字符数组实现,但由于不能采用赋值语句对数组整体赋值。
如:char *format; format=“a=%d,b=%f\n”; printf(format,a,b);
等价于:printf(“a=%d,b=%f\n”,a,b);
也可以:char format[ ]=“a=%d,b=%f\n”; printf(format,a,b);
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>