注意
printf("--%s--",str);防止数组中有回车漏掉
设置反复使用的变量时,一定要注意输入它时它的内存中所存的数值
考虑对操作的作用。
注意:在写题之前,注意先分析思路,然后再写题
函数参数传递:
值传递(实参与形参之间是传值的关系)
地址传递
引用传递
#include <stdio.h>
int sum(int a, int b)
{}
int main()
{
int *p(int, int);//注意指向函数的指针,变量名必须加小括号
int sum(int a, int b)
{}
int main()
{
int *p(int, int);//注意指向函数的指针,变量名必须加小括号
//int *p(int, int);
return 0;
}
return 0;
}
#define String char *
int main()
{
String s1, s2;
s1 = "jack";
s2 = "rose”;//s2并不是*char类型,而是char类型,只能赋值一个字符
return 0;
}
两个指针可以做减法,所得结果是两个指针之间有几个这样的类型,
也就是他们所指向的数组元素的下标的差 。
char c[10];
printf("%zd %zd",&c[1]-&c[7],&c[10]-&c[6]);
printf("%zd %zd",&c[1]-&c[7],&c[10]-&c[6]);
运行结果:-6 4
注意,这里涉及了一个c[10]表达式,但由于代码中没有涉及对c[10]的读写,只是求出指向这个char的指针,这个指针恰恰是c数组之后的第一个指针,这在C代码中没有任何问题,不属于越界访问。
system("pause");
system就是调用从程序中调用系统命令(和shell命令)。
system("pause")就是从程序里调用“pause”命令;
而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。
system("pause")就是从程序里调用“pause”命令;
而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。
表达式1[表达式2]与(*((表达式1)+(表达式2)))完全等价
例:
int i[1]={7};
printf("i[0]=%d\n0[i]=%d\n",i[0],0[i]);
printf("i[0]=%d\n0[i]=%d\n",i[0],0[i]);
printf("(i+1)[-1]=%d\n(-1)[i+1]=%d\n",(i+1)[-1],(-1)[i+1]);
i[0],0[i],(i+1)[-1],(-1)[i+1]运行结果相同。
指针变量所占字节数只与操作系统有关(32位4个,64位8个)
void既可以表示空类型,也可以表示其他类型
int (*p)[20];//p指向一个有20个int类型数组元素的数组
int *p[20];//p是一个数组名,数组元素有20个,每个元素都是“int *”类型
*p++等价于*(p++)
可以用指针修改字符数组,但不可修改常量字符串
例如:
char *strings[3] = { "iOS","Android","Win8”};
可修改内容
char *strings = “iOS”;
不可修改
C语言不会检查越界
switch语句执行与顺序无关,default语句放置在前面也可以