一、用变量a给出下面的定义:
a)一个整型数:int a ;
b)一个指向整型数的指针:int *a ;
c)一个指向指针的指针,它指向的指针是指向一个整型数:int **a ;
d)一个有10个整型数的数组:int a[10] ;
e)一个有10个指针的数组,该指针指向一个整型数:int *a[10] ;
f)一个指向有10个整型数数组的指针:int (* a)[10] ;
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数: int (* a)(int) ;
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型值: int (*a[10])(int) ;
二、命令行参数
int main (int argc, char **argv) or int main(int argc, char *argv[])
argc表示参数个数,包括./a.out
三、结构体
声明一个结构体类型形式:
struct 结构体名 {成员表列};
先声明结构体类型再定义变量名;
例:
struct student
{
char name[20];//不用初始化,知识结构体声明,不分配内存;如果使用的是char *name,需要申请空间
int age;
char sex;
};
typedef struct student stu;为结构体类型起别名,struct student = stu;
int main()
{
stu s;
strcpy(s.name, "hello");
s.age = 20;
s.sex = 'm';
printf("%s %d %c", s.name, s.age, s.sex);
}
or
stu s ={"hello", 20, 'm'};
结构体变量如果是指针:s.name变成s->name
计算结构体长度规则:
①是最大成员的整数倍(double除外)
②每个成员偏移量是该成员长度的整数倍