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

做单机游戏破解的网站哪个行业最需要推广

做单机游戏破解的网站,哪个行业最需要推广,政府单位门户网站开发文档,网站开发时app打开很慢一、字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如,有说明语句: char *str "This is a string.";是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符…

一、字符指针可以指向一个字符串。

我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:

char *str = "This is a string.";

是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。

这里要注意字符指针与字符数组之间的区别。例如,有说明语句:

char string[ ]="This is a string.";

此时,string是字符数组,它存放了一个字符串。

字符指针str与字符数组string的区别是:str是一个变量,可以改变str使它指向不同的字符串,但不能改变str所指的字符串常量。string是一个数组,每个元素的值都可以改变

例如下面的代码在运行期间将会出错:

 1 #include <iostream>2 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 }

二、其它说明

  1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写:“abc”,那么编译器帮你存储的是"abc\0"

  2. "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* ptr="abc";

因为定义的是一个普通指针,并没有定义空间来存放"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是被放在栈上的, 只不过是它所指向的东西被放在常量区罢了。

  1. 数组的类型是由该数组所存放的东西的类型以及数组本身的大小决定的。如char s1[3]和char s2[4],s1的类型就是char[3],s2的类型就是char[4],也就是说尽管s1和s2都是字符数组,但两者的类型却是不同的。

  2. 字符串常量的类型可以理解为相应字符常量数组的类型,如"abcdef"的类型就可以看成是const char[7]

  3. sizeof是用来求类型的字节数的。如int a;那么无论是sizeof(int)或者sizeof(a)都是等于4,因为sizeof(a)其实就是sizeof(type of a)

  4. 对于函数参数列表中的以数组类型书写的形式参数,编译器把其解释为普通的指针类型,如对于

void func(char sa[100],int ia[20],char *p)

则sa的类型为char*,ia的类型为int*,p的类型为char*

  1. 根据上面的总结,来实战一下:
  • 对于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     s+=6;
5     printf(\"%s\",s);
6 }
7 
8 //运行结果:man
http://www.hkea.cn/news/666598/

相关文章:

  • 建设一个百度百科类网站网站排名优化的技巧
  • 自己做网站可以吗淄博做网站的公司
  • 个人做健康网站好吗宁波网站制作与推广价格
  • 长沙有哪些做网站的连云港seo优化公司
  • 青羊区定制网站建设报价搜索引擎营销方案
  • 淘宝优惠券查询网站怎么做域名备案官网
  • wordpress自定义url优化教程网下载
  • 模板网站和定制网站百度搜索引擎的网址
  • 企业建设网站公司哪家好app拉新推广接单平台
  • 老虎淘客系统可以做网站吗江西省水文监测中心
  • 高港区企业网站建设快速建站教程
  • 怎样写企业网站建设方案北京网站seo招聘
  • 做蛋糕视频的网站软文广告范文
  • h5自适应网站模板下载网站换友链平台
  • 政府网站建设及管理规范各大搜索引擎入口
  • poedit pro wordpress免费网站推广优化
  • 市场营销产品推广策划方案seo合作代理
  • 东莞专业网站建设推广搜索引擎网络排名
  • 服务器做网站用什么环境好销售营销方案100例
  • 如何做DJ网站英文seo外链
  • 网站统计源码下载百度推广的步骤
  • 本地网站建设seo推广的方法
  • 东莞好的网站建设效果seo和sem分别是什么
  • 最新版wordpress背景手机网络优化软件
  • 丛台企业做网站推广免费建一级域名网站
  • 集宁网站建设免费网站推广网站破解版
  • 网站建设域名的购买有域名和服务器怎么建网站
  • 深圳有什么网站长沙百度seo
  • 台州企业网站模板建站怎么在百度上做公司网页
  • 烟台网站建设联系企汇互联专业网站维护收费标准