当前位置: 首页 > news >正文

企业培训网站模板网站建设内容模板

企业培训网站模板,网站建设内容模板,php 网站开发架构,沈阳个人网站建设代理品牌一、字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如#xff0c;有说明语句#xff1a; char *str This is a string.;是对字符指针进行初始化。此时#xff0c;字符指针指向的是一个字符串常量的首地址#xff0c;即指向字符…一、字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如有说明语句 char *str This is a string.;是对字符指针进行初始化。此时字符指针指向的是一个字符串常量的首地址即指向字符串的首地址。 这里要注意字符指针与字符数组之间的区别。例如有说明语句 char string[ ]This is a string.;此时string是字符数组它存放了一个字符串。 字符指针str与字符数组string的区别是str是一个变量可以改变str使它指向不同的字符串但不能改变str所指的字符串常量。string是一个数组每个元素的值都可以改变。 例如下面的代码在运行期间将会出错 1 #include iostream2 using namespace std;3 int main(void)4 {5 char str1[] C Language;6 char *str2 C Language;7 cout str1 str1 endl;8 cout str2 str2 endl;9 str1[1] -; 10 str2[1] ;//出错不能改变str所指的字符串常量// str2 C Language;可以改变str使它指向不同的字符串 11 cout str1 str1 endl; 12 cout str2 str2 endl; 13 return 0; 14 }二、其它说明 以字符串形式出现的编译器都会为该字符串自动添加一个0作为结束符如在代码中写“abc”那么编译器帮你存储的是abc\0 abc是常量吗答案是有时是有时不是。 不是常量的情况abc作为字符数组初始值的时候就不是如 char str[] abc;因为定义的是一个字符数组所以就相当于定义了一些空间来存放abc而又因为字符数组就是把字符一个一个地存放的所以编译器把这个语句解析为 char str[3] {a,b,c};又根据上面的总结1所以 char str[] abc;的最终结果是 char str[4] {a,b,c,\0};做一下扩展如果 char str[] abc;是在函数内部写的话那么这里的abc\0因为不是常量所以应该被放在栈上。 是常量的情况把abc赋给一个字符指针变量时如 char* ptrabc;因为定义的是一个普通指针并没有定义空间来存放abc所以编译器得帮我们找地方来存放abc显然把这里的abc当成常量并把其放到程序的常量区是编译器最合适的选择。所以尽管ptr的类型不是const char*并且ptr[0]x’也能编译通过但是执行ptr[0]x’就会发生运行时异常因为这个语句试图去修改程序常量区中的东西。 记得哪本书中曾经说过char* ptr “abc”;这种写法原来在C标准中是不允许的但是因为这种写法在C中实在是太多了为了兼容C不允许也得允许。虽然允许 但是建议的写法应该是**const char* ptr “abc”;这样如果后面写**ptr[0] x’的话编译器就不会让它编译通过也就避免了上面说的运行时异常。 又扩展一下如果char* ptr “abc”;写在函数体内那么虽然这里的abc\0被放在常量区中但是ptr本身只是一个普通的指针变量所以ptr是被放在栈上的, 只不过是它所指向的东西被放在常量区罢了。 数组的类型是由该数组所存放的东西的类型以及数组本身的大小决定的。如char s1[3]和char s2[4]s1的类型就是char[3]s2的类型就是char[4]也就是说尽管s1和s2都是字符数组但两者的类型却是不同的。 字符串常量的类型可以理解为相应字符常量数组的类型如abcdef的类型就可以看成是const char[7] sizeof是用来求类型的字节数的。如int a;那么无论是sizeof(int)或者sizeof(a)都是等于4因为sizeof(a)其实就是sizeof(type of a) 对于函数参数列表中的以数组类型书写的形式参数编译器把其解释为普通的指针类型如对于 void func(char sa[100],int ia[20],char *p)则sa的类型为char*ia的类型为int*p的类型为char* 根据上面的总结来实战一下 对于char str[] abcdef;就有sizeof(str) 7,因为str的类型是char[7]也有sizeof(abcdef) 7因为abcdef的类型是const char[7]。对于char *ptr abcdef;就有sizeof(ptr) 4因为ptr的类型是char*。对于char str2[10] abcdef;就有sizeof(str2) 10因为str2的类型是char[10]。对于void func(char sa[100],int ia[20],char *p);就有sizeof(sa) sizeof(ia) sizeof§ 4因为sa的类型是char*ia的类型是int*p的类型是char*。 三、区别 1字符数组由若干个元素组成每个元素中存放字符串的一个字符而字符指针变量中存放的是字符串的首地址。 2初始化方式不同。对字符数组初始化要用static存储类别在编译时进行。而对字符指针变量初始化不必在static在实际执行时进行。 3赋值方式不同。对字符数组不能整体赋值只能转化成份量对单个元素进行。而字符指针变量赋值可整体进行。 例如 1 char s[10] 2 s \C\/*对字符数组不能整体赋值*/4在定义一个字符数组时编译时即已分配内存单元有确定的地址。而定义一个字符指针变量时给指针变量分配内存单元但该指针变量具体指向哪个字符串并不知道即指针变量存放的地址不确定。例如 1 char a[10]; 2 char *p; 3 scanf(\%s\a);/*正确*/ 4 scanf(\%s\p)/*非常危险p的值动态*/5字符指针变量的值可以改变字符数组名是一个常量不能改变。例如有简单程序 1 main() 2 { 3 char *s\china man\ 4 s6 5 printf(\%s\s); 6 } 7 8 //运行结果man
http://www.w-s-a.com/news/179355/

相关文章:

  • 做网站成功建设银行网站网址
  • 自动生成网站上海十大活动策划公司
  • 企业网站建设源码HTML论述市场营销对网站设计的影响
  • 网站设计常见问题建设工程网上质检备案网站
  • 网站怎样优化文章关键词建设网站需要钱吗
  • 加强网站建设和管理的通知重庆网站推广产品
  • 网站建设术语解释百度发布信息的免费平台
  • 情公司做的网站seo与网站优化 pdf
  • 做一个购物网站多少钱江阴市住房和城乡建设局网站
  • 网站建设都包括哪些ps怎么做网站首页和超链接
  • 怎样低成本做网站推广编辑网站教程
  • 邯郸网站建设信息网站开发报价人天
  • 王店镇建设中心小学网站酷玛网站建设
  • 网站需求方案wordpress博客主题推荐
  • 网站安全证书过期怎么办那个视频网站最好最全网址
  • 外贸上哪个网站开发客户建行个人网上银行登录入口
  • 空间除了可以做网站还能干什么qq钓鱼网站
  • 网站 技术企业网站用免费程序
  • 做网站的中文名字汕尾网站开发
  • 网站推广效果推广网站推荐
  • 腾讯企业网站建设网络推广比较经典和常用的方法有
  • 四川成都网站网页设计上海外贸网站制作公司
  • wordpress模板首页图片锦州网站做优化
  • 哔哩哔哩网站建设分析有哪些做网站好的公司
  • 福建建设执业中心网站沧州网络推广外包公司
  • 做网站怎么改关键词营销网站建设818gx
  • 广撒网网站怎么进行网络营销
  • 中职计算机网站建设教学计划电商网站如何避免客户信息泄露
  • 惠州微网站建设外贸进出口代理公司
  • 网站建设最常见的问题建设银行网站机构