int a[3];
该语句声明了 a 是一个拥有3个整型元素的数组。
strcut {
int p[4];
double x;
}b[17];
表示数组 b 有17个元素,每个元素都是一个结构体,结构体中包含一个4个元素的整型数组 p 和一个双精度类型变量 x 。
int calendar[12][31];
二维数组的声明,表示该数组有12个数组类型的元素,每个元素都是一个拥有31个整型元素的数组。(先12后31)
&a代表指向数组的指针,而不是指向数组的第一个元素。a[2]与2[a]含义相同非数组情况主要是对字符串的操作。
合并字符串:
char *r , *malloc();
//动态申请空间,大小为两个字符串长度加一个'\0'字符
r = malloc(strlen(s) + strlen(t) +1);
//如果malloc运行失败,会返回一个空指针
if(!r)
{
complain(); //输出错误提示
exit(1);
}
strcpy(r,s);
strcat(r,t);
//一段时间后释放malloc分配的空间
free(r);
int strlen(char a[])
{ }
等同于
int strlen(cahr* a) //指针参数不代表数组,仅代表数组的第一个元素的地址
{ }
maiun(int argc, char* argv[]) //强调的重点在于argv是一个指向某数组的起始元素的指针,且该数组的元素为字符指针类型
{ }
等同于
maiun(int argc, char** argv)
{ }
C语言中复制指针时,并不复制指针所指向的内存数据,所以复制后的指针与原指针指向同一个地址的内存数据,改变任意一个指针所指向的内容,另一个指针所指向的内容也会改变,因为本质是同一个数据。
C语言中,对于空指针,不能使用该指针所指向的内存中存储的内容,不能作为函数的参数进行调用,
int i, a[10];
for( i=1; i<=10; i++ )
{
a[i] = 0;
}
本意是将数组 所有元素置 0,当 i 等于 10 时,超出数组长度,计数器 i 会被赋值 0 ,所以会陷入死循环。
不对称边界,用第一个入界点和第一个出界点表示一个数值范围入界点包含在取值范围内,出界点不包含在取值范围内,例如:
x >= 16 && x <= 37 改为 x >= 16 && x < 38
这样写的好处有:
-------------------------持续更新--------------------------