注意

printf("--%s--",str);防止数组中有回车漏掉



设置反复使用的变量时,一定要注意输入它时它的内存中所存的数值
考虑对操作的作用。
 
注意:在写题之前,注意先分析思路,然后再写题

函数参数传递:
值传递(实参与形参之间是传值的关系)
地址传递
引用传递
 
#include <stdio.h>
int sum(int a, int b)
{}
int main()
{
    int *p(int, int);//注意指向函数的指针,变量名必须加小括号
     //int *p(int, int);
    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]);
    运行结果:-6     4
注意,这里涉及了一个c[10]表达式,但由于代码中没有涉及对c[10]的读写,只是求出指向这个char的指针,这个指针恰恰是c数组之后的第一个指针,这在C代码中没有任何问题,不属于越界访问。

system("pause");
system就是调用从程序中调用系统命令(和shell命令)。
system("pause")就是从程序里调用“pause”命令;
而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press   any   key   to   exit”的字,等待用户按一个键,然后返回。

表达式1[表达式2]与(*((表达式1)+(表达式2)))完全等价
例:
int i[1]={7};
    printf("i[0]=%d 0[i]=%d ",i[0],0[i]);
printf("(i+1)[-1]=%d (-1)[i+1]=%d ",(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语句放置在前面也可以

 

原文地址:https://www.cnblogs.com/Alling/p/3971876.html