c语言字符串和指针的关系,c语言字符串和指针

  c语言字符串和指针的关系,c语言字符串和指针

  用指针实现的字符串:

  #包含stdio.h

  int main(void){

  char * p= vv

  printf(p=%s\n ,p);

  p=猫;

  printf(p=%s\n ,p);

  返回0;

  }运行结果:

  char * p= vv

  printf(p=%s\n ,p);用指针实现的数组p:

  p是一个指向char变量的指针变量,它的初始值是字符串文字“vv”。通过判断一个字符串的字面量,可以得到一个指向该字符串字面量的第一个字符的指针。所以P被初始化为指向存储在内存中的字符串文字“vv”的第一个字符串“v”的指针。

  使用指针实现字符串的错误声明:

  char * p={v , v , c , a , \ 0 };{}形式的数组初始值不能用于单个变量。

  在内存空间中,指针P和字符串文字“vv”都占用内存空间。

  #包含stdio.h

  int main(void){

  char * p= vv

  printf(p=%s\n ,p);

  printf(sizeof(p)=%u \n ,sizeof(p));

  printf(sizeof(vv)=%u \n ,sizeof( vv );

  返回0;

  }运行结果:

  p指针占用的空间是sizeof,即sizeof (char*)字节,其长度因编译器而异。

  因此,用指针实现的字符串比用数组实现的字符串需要更多的内存空间。

  char * p= vv

  printf(p=%s\n ,p);

  p=猫;

  printf(p=%s\n ,p);用数组实现的字符串和用指针实现的字符串之间的区别是:

  您可以将指向字符串文字(中的字符)的指针分配给其他字符串文字(中的字符)。赋值后,指针指向新的字符串文字(中的字符)。

  注意:

  P中的字符串被更改,但字符串没有被完全复制。在内存中,指针指向“vv”,无法访问,成为无法清除的垃圾。因为字符串文字具有静态内存,所以当不需要它们时,它们不会自动从内存空间中清除。

  #包含stdio.h

  int main(void){

  char str[]= 2020 ;

  printf(str=%s\n ,str);

  str= 07/08 ;//此赋值方法不能在字符串数组中使用。编译错误

  printf(str=%s\n ,str);

  返回0;

  }字符串数组直接赋给数组变量,下面三种是错误的赋值方法:

  char str[6];

  str={V , V , c , a , \ 0 };str=" VVcatstr={ " vv cat " };#包含stdio.h

  #定义透镜6

  int main(void){

  int I;

  char a[][LEN]={2020 , 7 , vv cat };

  char *p[]={2020 , 7 , vv cat };

  for(I=0;i3;i ){

  printf(a[%d]=%s ,sizeof(a[%d])=%u \n ,I,a[i],I,sizeof(a[I]));

  }

  puts(-);

  for(I=0;i3;i ){

  printf( p[% d]= % s sizeof(p[% d])=% u \ n ,I,p[i],I,sizeof(p[I]));

  }

  puts(-);

  printf(sizeof(p)=%u \n ,sizeof(p));

  printf(sizeof(2020)=%u \n ,sizeof( 2020 );

  printf(sizeof(7)=%u \n ,sizeof( 7 );

  printf(sizeof(vvcat)=%u \n ,sizeof( vv cat );

  返回0;

  }运行结果:

  可以看出,二维数组和指针数组虽然可以存储多个字符串,但本质是完全不同的。一种是在定义字符串的时候已经分配了存储字符串的空间,另一种是只定义了指向字符串的指针,没有存储字符串的空间。你现在需要给它一个指针,将字符串存储在相应的位置,指针也占用了一定的内存空间。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: