1、地址运算符 &
一元运算符&可以取得变量的存储地址。假设a=1,那么&a就是a在内存中的位置。
指针是一个其数值为地址的变量(或者更一般的说是一个数据对象),指针声明时,需要指定其指向地址的值的类型。当创建一个指针时,只分配了存储指针的本身的内存空间,并不分配用来存储数据的内存空间(可以将已有变量的地址赋值给指针,或者通过malloc分配内存).
间接运算符 *, 当其后跟一个指针或地址时,*给出存储在被指向地址中的值。
指针在函数间通信
int x, y, z;
x= 1;
y = 2;
z = 0;
add(x, y, &z);//函数执行的是x+y=z的值
得出结果 z = 3;
z指向地址的变量发生改变!
2、一维数组长度
定义一个长度为10的整形数组,const int days[]={1,2,3,4,5,6,7,8,9,10}; 数组长度为 sizeof days / sizeof days[0]
多维数组 arr[row][column],
定义一个多维数组
cons int arr[2][3]={
{1,2,3},
{4,5,6}
}
3、数组和指针
举例,flizey为以为数组,
flizey = &flizey[0] //数组名为该数组首元素的地址
double *p;
p = flizey;
p++;
p指向第二个数组元素的地址,
所以指针定义时,要申明只针对变量类型,指针加1不是地址简单的加1,而是变量地址+一个单元的存储地址。
4、字符和字符串
gets(), puts(), getchar(), putchar(), fgets(), fputs(), strlen(), strcat(), strncat(), strcmp(0, strncmp(), strcpy(), strncpy(),
5、结构变量
定义图书馆书的书名,作者,价格等为一个数据对象。
struct book library;
是以下声明的简化
struct book{
char title[MAXSIZE];
char author[MAXZISE];
float value;
} library;
声明结构数组
struct book library[MAXSIZE];
指向结构的指针:
typedef:
typedef struct complex{
float real;
float imag;
} COMPLEX;
可以用类型XOMPLEX 代替struct complex 来表示复数。
typedef 是为经常出现的类型创建一个方便的、可识别的名称。
6、C预处理器和C库
明显常量:#define ; 文件包含: #include ; #undef 指令取消一个给定的#define ; 条件编译: #ifdef , #else, #endif