c语言中出现“char *a”是什么意思?

如题所述

char *a是声明了一个指向char类型的指针变量;
此时,a并没有被初始化,没有被指向任何数据;
所以此时scanf("%s", a)是错误的,a此时只是一个空指针,而且你也不能向一个指针变量中存储非地址类型之外的数据;
这就相当于:
你要帮你朋友(char *a所指向的对象)买某一个类型的商品;
这个商品名字叫“%s”;
但是你却没告诉计算机怎么联系(char *a所指向的对象)

char *a = "hello world"; 并不是原始写法,是一种简化写法,等同于:
char x[] = "hello world";
char *a;
a = x;
好处除了一句话干了三句话的事情之外,还少用了一个中间变量(数组名本身就是一个指针变量)

此外,最原始的C,如果你写下:
char x[] = "hello world";
char y[] = "hello world";
char *a = x;
char *b = y;
此时,a、b变量本身是独立开的,可区分的,但是他们所指向的内存地址却是一个,这是C语言的一个特性,在编译时,会将相同的字符串合并起来创建,以此来节省空间,以C为原型的一些语言,比如obj-c也保留了这个特性;
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网