使用字符串指针变量和字符数组的比较

  1. 赋值方式
    可以对字符指针变量赋值,但不能对数组名赋值。
  2. 初始化
    字符指针变量可以先定义,再初始化;而数组在定义后,只能对其元素一个一个赋值,要想整体赋值,必须在定义数组时就初始化。
char * a="qwert";  等价于  char * a;  a="qwert";
而
char a[]="qqqqq";   等价于 char a[5];  for(int i=0;i<5;i++){ a[i]='q'; }
  1. 指针变量的值可以改变,而字符数组名代表一个固定的值(数组首元素地址)
  2. 字符数组中各元素值可以改变,但字符指针变量指向的字符串的内容是不可被改变的。
char a[]="qwert";
char * b="qwert";
a[2]='k';     //正确,k取代了e
b[2]='k';     //错误,字符串常量不能被改变
  1. 定义一个字符数组char a[]="qwert";,可以用*(a+2)引用元素a[2];如果此时定义了一个指针变量p,指向数组a,则可用p[2]表示a[2],若p此时指向a[1],则p[2]表示a[3]。如果定义了指针变量char * b="qwert";,则b[2]就表示w,,b[2]按*(b+2)处理。
  2. 可变格式输出函数
    用指针变量代替一个格式字符串
char * format;  //也可定义为字符数组
format="a=%d,b=%f\n";
printf(format,a,b);
同printf("a=%d,b=%f\n",a,b);效果一样
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值