一、函数
二、指针
1.指针是一个用来存储内存地址的变量。
int * p ;
定义了一个指针变量p,p中存储的是一个地址,改地址里必定会存储一个int类型的数据。
*号表示变量p是一个指针。*和指针变量p中间的空格可以没有。
2.把变量a的地址存到指针变量p中。
p=&a;
打印p变量存储的内容,也就是变量a的所在地址
#include <stdio.h> int main() { int a = 5; int p = &a; printf("%p ", p); //打印指针变量p里存的内容 printf("%p ", &a);//打印变量a的地址 printf("%x ", p);//小写16进制 printf("%#X ", p);//以0X开头的大写16进制 return 0; }
打印地址
每个16进制对应4位,本图对应24位地址。
3.指针通信
#include <stdio.h> void change(int * i, int * j); int main() { int x = 5; int y = 6; change(&x, &y);// printf("x=%d,y=%d",x,y); } void change(int * i,int * j)//定义两个指针变量 { int temp; temp = *i; *i = *j; *j = temp; }
三、数组
1.初始化数组
如果超出数量范围,编译器会提示错误
2.获得总个数
printf("%d ", sizeof(a)/sizeof(a[0]));//用总的字节数除以单个的字节数,得到初始化开辟的数量。 printf("%d ", sizeof(b)/sizeof(b[0]));//无论有没有填满数组
3.没有的位置补零.
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", a[i]); }
4.初始化器 C99新特性
#include <stdio.h> int main() { int a[8] = { 1,2,[4] = 8,9,[1]=3 };//初始化器,指定位置赋值,未初始化为0 for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", a[i]); } return 0; }
结果
5.赋值
不能把一个数组赋值给另一个数组,
除初始化外,不能使用花括号,
注意数组下表越界问题,