指针、结构体、枚举类和文件

  • 指针

//指针变量中只能存放地址(指针)
int  *pointer = 100; //是不合法的,int *p=后面必须是地址变量
int  a=10;
int *p  = &a;
*p = 1;//表示将整数 1 赋给 p 指针当前指向的变量,相当于把1赋给 a,即a = 1
printf("%d",*p);// 1
printf("%d",p);// a的地址

//数组指针
int a[10] = {0,1,2,3,4,5,6,7,8,9}; 
int *p; 

p = &a[0]; //等价于下面
p = a;//等价于上面

  • 动态分配数组
    在这里插入图片描述
  • 易错
    在这里插入图片描述

C 语言不支持在调用函数时返回局部变量的地址,除非定义局部变量为 static 变量

/* 要生成和返回随机数的函数 */
int * getRandom( )
{
   static int  r[10];
   int i;
   /* 设置种子 */
   srand( (unsigned)time( NULL ) );
   for ( i = 0; i < 10; ++i)
   {
      r[i] = rand();
      printf("%d\n", r[i] );
   }
   return r;
}
strcpy(s1, s2);复制字符串 s2 到字符串 s1。

strcat(s1, s2);连接字符串 s2 到字符串 s1 的末尾。

strlen(s1);返回字符串 s1 的长度。

strcmp(s1, s2);如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0strchr(s1, ch);返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。

strstr(s1, s2);返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

  • 结构体

struct Stu{
    char *name;  //姓名
    int num;  //学号
};
struct Stu stu1

typedef struct Stu{
    char *name;  //姓名
    int num;  //学号
}S;
S stu1;

  • 枚举类

enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
enum week{ Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 };

scanf("%d", &day);
switch(day){
    case Mon: puts("Monday"); break;
    case Tues: puts("Tuesday"); break;
    case Wed: puts("Wednesday"); break;
    case Thurs: puts("Thursday"); break;
    case Fri: puts("Friday"); break;
    case Sat: puts("Saturday"); break;
    case Sun: puts("Sunday"); break;
    default: puts("Error!");
}

输入:
4
输出:
Thursday

  • 文件读写

FILE *fpw = NULL;
fpw = fopen("/hello.txt","w+");
fprintf(fpw, "This is testing for fprintf...\n");
fputs("This is testing for fputs...\n", fpw);
fclose(fpw);

FILE *fpr = NULL;
char buff[255];

fpr = fopen("/hello.txt", "r");
fscanf(fpr, "%s", buff);
printf("1: %s\n", buff );

fgets(buff, 255, (FILE*)fpr);
printf("2: %s\n", buff );

fclose(fpr);
return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值