1)
1.#definePINT int *
2.typedefint * SINT;
这两的区别
答:我觉得这两个的区别就是第二个只是把int*重新命名为SINT而已,而第一个就是从预处理阶段就把以后代码中的PINT全部替换成 int *了。
2)派生类型和基本数据类型为什么不能隐式转换。
1.隐式转换的概念
隐式类型转换所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需人为干预。因此,在表达式中如果有不同类型的数据参与同一运算时,编译器就在编译时自动按照规定的规则将其转换为相同的数据类型。
C语言规定的转换规则是由低级向高级转换。
2.基类派生类的定义:通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类(父类),由已存在的类派生出的新类称为派生类(子类)。
在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
3.基类抽取了它的派生类的公共特征,而派生类通过增加行为将抽象类变为某种有用的类型。子类 是特殊的 父类。所以可以直接赋给父类对象,反过来不可以。
3)
char ch[10]={"yhping"};
char ch [10]={'y','h','p','i','n','g'};
char *str = "yhping";
区别是什么。
char ch[10]={"yhping"};//字符串数组,用字符串常量进行初始化不能改变大小或重分配但可改变内容。在栈上申请空间,将常量内容复制进来,所以是局部变量。开辟了10个char类型空间前6个空间放y,h,p,i,n,g,后四个空间放\0。char ch2[10]={'y','h','p','i','n','g'};//字符串数组,它是用单个字符作为字符数组的初char ch2[10]={'y','h','p','i','n','g'}开辟了10个空间,前6个元素为'y','h','p','i','n','g',后4个元素为空字符。
char *str = "yhping"; //表示先定义一个字符串常量,并将其地址赋给str,str指向字符串常量,不能修改 。str指向该常量地址
4) char ch[100];
char *str;
gets(ch);
gets(str);//
char ch[100];
char *str;
gets(ch);//输出小于数组长度内部的字符的值
gets(str);//str首先要分配空间,将指针p分配一组字符串内存地址,指针的作用是保存一个内存地址。将指针str分配一组字符串内存地址gets()函数:从流中读取字符串。
gets()函数用于从缓冲区中读取字符串, gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。
这篇缺了sizeof和strlen的区别。