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

做毕业设计实物的网站宣传链接怎么做

做毕业设计实物的网站,宣传链接怎么做,Adobe Muse网站代做,网站改版设计要多久一、字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如,有说明语句: 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.hrbkazy.com/news/31240.html

相关文章:

  • 手机怎么制作网站教程步骤长尾关键词挖掘精灵
  • 西部数码网站管理助手安装接外包项目的网站
  • 和狗做的网站好新网域名注册查询
  • 全网推广网站优化大师win7官方免费下载
  • 怎么做网站投票选举百度快照优化
  • 百度网站是怎么建设的网站推广技巧有哪些
  • 网站开发招标网网红推广团队去哪里找
  • 网站建设中国十强网站推广入口
  • 个人网站怎么做支付功能深圳全网推广排名
  • 东营免费网站制作aso优化技巧大aso技巧
  • Wordpress hover插件搜索引擎排名优化技术
  • WordPress网站打不开nginx防疫测温健康码核验一体机
  • 做翻译赚钱的网站好温州网站快速排名
  • 外贸营销型网站建设免费二级域名建站
  • php记录网站访问次数宁波seo关键词
  • 广西桂林最新事件兴安盟新百度县seo快速排名
  • 大型做网站的公司中国营销型网站有哪些
  • 网站的制作成品百度关键词seo外包
  • 门户网站的建设目的网页设计大作业
  • 虚拟机网站建设广州做seo整站优化公司
  • 礼品网站如何做发外链比较好的平台
  • 做景观设施的网站成都百度网站排名优化
  • 开发区网站建设工作职责郑州seo线下培训
  • 怎么样备份网站数据aso优化吧
  • 网站移动站百度信息流广告投放
  • 嘉兴营销型网站建设网站推广网络营销
  • 建网站用什么工具网页设计与制作个人网站模板
  • wordpress单页主题制作视频教程网络seo外包
  • 做网站页面大小多大seopc流量排名官网
  • 宁波网站建设培训哪家好如何制作一个网页页面