C语言-字符数组相关-持续更新

day17 03 17

indiabix一道题目

What will be the output of the program ?

#include<stdio.h>

int main()
{
    char str[] = "Nagpur";
    str[0]='K';
    printf("%s, ", str);
    str = "Kanpur";
    printf("%s", str+1);
    return 0;
}
A.
Kagpur, Kanpur
B.
Nagpur, Kanpur
C.
Kagpur, anpur
D.
Error

 

 

对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值

         char str[14];

         str="I love China";     (但在字符数组初始化时可以,即char str[14]="I love China";)

而对字符指针变量,采用下面方法赋值:

          char* a;

          a="I love China";

          或者是 char* a="I love China";       都可以

 

         char* a="I love China";      

等价于:

           char* a;

           a="I love China";

而对于字符数组的初始化

          char str[14]="I love China";

不能等价于:

         char str[14];

         str="I love China"; (这种不是初始化,而是赋值,而对数组这样赋值是不对的)

如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值

摘自http://www.cnblogs.com/lidabo/archive/2012/08/28/2660048.html

 

究其根本原因还不得知。或许是因为常量池?

posted @ 2017-03-17 16:41  _SunDaSheng  阅读(120)  评论(0编辑  收藏  举报