Aaron学习笔记

少壮不努力,长大没饭吃!
posts - 4, comments - 13, trackbacks - 0, articles - 37

这一是道面试题目,是关于字符串赋值的,看似简单,实则很容易错,请看看!

/*
**一道字符串不同赋值方法的题目
*/

//这个的结果是什么?

#include <stdio.h>
int main()
{
  char *pa   ="ABCDE";   
  char *pb   =&pa[1];   
  pb[1]   ='X';   
  printf("pa:%s\n",pa);   
  printf("pb:%s\n",pb); 
  return 0;
}

//这个的结果是什么?
#include <stdio.h>
int main()
{
  
char pa[] ="ABCDE";   
  
char *pb =&pa[1];   
  pb[
1='X';   
  printf(
"pa:%s\n",pa);   
  printf(
"pb:%s\n",pb);
}

/*
output:
pa:ABXDE
pb:BXDE
*/

char *string2 = "Hello"; char string2[] = "Hello";
这两种赋值方式都是正确的,只是区别是:char *string2 = "Hello"; 是将string2指向到内存中内容一个"Hello"的字符串常量,记着,是个常量,所以这里的string2是不能够改变的。而char string2[] = "Hello";string2是一个字符数组,这是一个变量,所以里面的内容是可以修改的。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理