作业

来源:互联网 发布:外汇决策数据分析 编辑:程序博客网 时间:2024/05/16 17:57
1.一、typedef的用法
在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:
typedef    int       INT;
typedef    int       ARRAY[10];
typedef   (int*)   pINT;
typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。
二、#define的用法
#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题,它的实例像:
#define   INT             int
#define   TRUE         1
#define   Add(a,b)     ((a)+(b));

#define   Loop_10    for (int i=0; i<10; i++)

typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量。

2.

3.char ch[10]={"yhping"};//字符串数组,用字符串常量进行初始化 不能改变大小或重分配 但可改变内容。在栈上申请空间,将常量内容复制进来,所以是局部变量。它等价于char ch[10]={'y','h','p','i','n','g','\0'};系统自动在后面加了一个'\0',作为字符串结束的标志,后3个元素为空字符。
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指向该常量地址
        strlen(ch)==6(返回字符串的大小)
strlen(str)==6(返回字符串的大小)
sizeof(ch)==10(数组的大小)
sizeof(str)==4(指针字节)
sizeof("yhping")==7(包含字符'\0'的字符串长度)

4.char ch[100];
   char *str;
   gets(ch);//输出小于数组长度内部的字符的值
   gets(str);//str首先要分配空间,将指针p分配一组字符串内存地址,指针的作用是保存一个内存地址。将指针str分配一组字符串内存地址如下str = (char *)malloc(NUM*sizeof(char));  
gets()函数:从流中读取字符串。
gets()函数用于从缓冲区中读取字符串,其原型如下:
    char *gets(char *string);
gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。如果给数组空间放值大于数组长度时,系统会崩溃,所以考虑到程序安全性和健壮性,建议用fgets()来代替gets()。

原创粉丝点击