指针和数组名及字符串的区别

来源:互联网 发布:淘宝电视机价格 编辑:程序博客网 时间:2024/06/05 17:07

学习嵌入式技术有一段时间了,对于C语言容易混淆不清楚的地方自己做了一下总结:

指针和数组名:

   指针和数组名是大家争论焦点,各种各样的说法。有人说数组名就是指针(常指针),有人说数组和指针不是一个概念:

这里不谈原理和概念:自己总了他们在用法上的不同和相同:

   例子: int  a[10]; int * b;

   不同:1、sizeof()不同

             sizeof(a)为整个数组的内存,sizeof(b)为指针的内存一般是4字节;

              2、&a  和 b的指针运算不同

              理解为   int * a[10]和int (*a)[10]的区别

 相同:1、角标运算相同

              如果b=&a[0]    那么a[5]的值完全和b[5]相同

     2、作为形参形同

function(int * num)中function(a)和function(b)一样


字符串和数组

1、字符串被编译器处理为指向char 的指针

    char *a;        a="qewre";相当一次复制  “qwere”相当于一个指向char的指针


2、char str[] ="xxxx",特殊!是数组初始化的简略形式;


3、char *a="xxx" 和char b[]={''x','x','x'};不一样的地方在于  系统会给a自动加上结束符而b没有结束符,如果需要划定界限自己添加结束符。

  简答来体现:strlen(a)和strlen(b)不一样;



   

0 1
原创粉丝点击