黑马程序员技术交流社区

标题: C语言学习笔记之二维字符串数组和char型指针数组的区别 [打印本页]

作者: chunhuayun    时间: 2015-9-27 21:11
标题: C语言学习笔记之二维字符串数组和char型指针数组的区别
1.二维字符串数组
A.用二维的字符数组可以存储多个字符串,第一维存得时每个字符串的首地址,每个字符串的长度不能超过第二维长度
例如:
  1.     char arr[3][5] = {"abc","2134","abcd"};
  2.     for (int i = 0; i < 3; i++) {
  3.         printf("%s ",arr[i]);

  4.     }
复制代码

打印结果:
abc 2134 abcd

2.char类型的指针数组

定义了一个指针数组name,并对name做了初始化赋值,其每个元素都指向一个字符串常量
例如:
  1.     char *p[] = {"I am Amos",
  2.                  "I can fly",
  3.                  "I want to be super man",
  4.                  "I do not want to waste my time"
  5.                 };//这其中的值都是常量,是不能改的。但是长度是没有限制的。
  6.    
  7.     for (int i = 0; i < 3; i++) {
  8.         printf("%s\n", *(p+i));
  9.     }
复制代码


打印结果:
I am Amos
I can fly
I want tobe super man

2.字符指针变量与字符数组的区别
例如:
  
  1. char *p = "I am amos";//p是一个字符串指针变量
  2.     p = = "I am not amos";//可以改变指针的指向
  3.     char str[] = "I can fly";
  4.     str = "I am a boy";//报错,因为数组名是一个常量,不可改变
复制代码


作者: 睡觉就有梦想    时间: 2015-9-27 22:51
看看 感谢分享
作者: i_iOS    时间: 2015-9-28 21:56
写的挺好的,代码也是分次插入的,挺认真的楼主
作者: chunhuayun    时间: 2015-9-28 22:11
i_iOS 发表于 2015-9-28 21:56
写的挺好的,代码也是分次插入的,挺认真的楼主

嘿嘿,我不想发水帖呀。省的浪费别人时间呀,要不然你一打开,哇塞,好大一滩水{:2_34:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2