-
指针
//指针变量中只能存放地址(指针)
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 则返回大于 0。
strchr(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;