C语言中char*和char[]用法区别分析

 更新时间:2014年09月15日 09:18:20   投稿:shichen2014  
这篇文章主要介绍了C语言中char*和char[]用法区别,包括使用过程中的误区及注意点分析,需要的朋友可以参考下

本文实例分析了C语言中char* 和 char []的区别。分享给大家供大家参考之用。具体分析如下:

一般来说,很多人会觉得这两个定义效果一样,其实差别很大。以下是个人的一些看法,有不正确的地方望指正。

本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:

当char *s = "hello";后,不能使用s[0]='a';语句进行赋值。这是将提示内存不能为"written"。

当用char s[]="hello";后,完全可以使用s[0]='a';进行赋值,这是常规的数组操作。

若定义:

char s[] = "hello";
char *p = s;

也可以使用p[0] = 'a';因为这是p ==s,都是指向数组的指针。

下面看另外一种定义:

char *s = (char *)malloc(n(www.jb51.net));//其中n为要开辟空间的大小

这句话其实相当于:

char s[n];

定义的也是一个指向数组的指针,便可进行数组的下标操作

例子

#include <stdio.h>

int main(int argc, char* argv[]) {
char* buf1 = "this is a test";
char buf2[] = "this is a test";
printf("size of buf1: %d\n", sizeof(buf1));
printf("size of buf2: %d\n", sizeof(buf2));
return 0;
}

结果是:

$ > ./main
size of buf1: 4
size of buf2: 15

相信本文所述对大家C语言程序设计的学习有一定的借鉴价值。

相关文章

  • Qt中鼠标点击的几种状态

    Qt中鼠标点击的几种状态

    在Qt中,鼠标点击按钮通常会触发一系列的事件,包括pressed、released、clicked等,本文主要介绍了Qt中鼠标点击的几种状态,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 详解C++11 线程休眠函数

    详解C++11 线程休眠函数

    这篇文章主要介绍了C++11 线程休眠函数的相关资料,帮助大家更好的理解和学习C++11,感兴趣的朋友可以了解下
    2020-10-10
  • C语言实现多项式的相加

    C语言实现多项式的相加

    这篇文章主要为大家介绍了C语言实现多项式的相加,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C语言strlen函数全方位讲解

    C语言strlen函数全方位讲解

    在C语言中我们要获取字符串的长度,可以使用strlen函数,strlen函数计算字符串的长度时,直到空结束字符,但不包括空结束字符,因为 strlen函数时不包含最后的结束字符的,因此一般使用strlen函数计算的字符串的长度会比使用sizeof计算的字符串的字节数要小
    2022-09-09
  • C与C++ 无参函数的区别解析

    C与C++ 无参函数的区别解析

    在《C++ 编程思想》:“关于无参函数声明,C与C++有很大的差别。在C语言中,声明int fun1(),意味着一个可以有任意数目和类型的函数;而在C++中,指的却是一个没有参数的函数”
    2013-07-07
  • VC++中进程与多进程管理的方法详解

    VC++中进程与多进程管理的方法详解

    这篇文章主要介绍了VC++中进程与多进程管理的方法,以实例形式详细分析了进程与多进程管理中所涉及的进程、子进程、进程的互斥运行与进程的结束等概念与具体实现方法,非常具有参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • c++如何控制输出浮点数小数点后若干位

    c++如何控制输出浮点数小数点后若干位

    这篇文章主要介绍了c++如何控制输出浮点数小数点后若干位问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • C语言中条件判断的正确使用姿势

    C语言中条件判断的正确使用姿势

    在C语言中,有三种条件判断结构:if语句、if-else语句和switch语句,这篇文章主要来和大家讲解一下它们的正确使用姿势,需要的可以参考一下
    2023-05-05
  • C语言零基础入门(1)

    C语言零基础入门(1)

    这篇文章主要为大家详细介绍了C语言零基础入门的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言控制台打砖块小游戏

    C语言控制台打砖块小游戏

    这篇文章主要为大家详细介绍了C语言控制台打砖块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论