得心应手的工具掌握起来的困难程度要大于普通工具
数组A[N]的下标为0~N-1
main的返回值0,表示成功调用
单引号引起的 整数:整数值对应于该字符在编译时字符集中的序列值。如‘A’
双引号引起字符串.如“hello”
If与else配对(else总是找最近的一个if)
声明与定义:声明在头文件中,如果多个cpp用到了头文件,编译时重定义问题,这样有两个解决方法
if udefine/define或者加上声明前加上extern关键词
指针与数组
数组只能确定该数组的大小;获得下标为0的元素的指针
其他操作都是指针运算
非数组的指针
分配字符串空间(长度为N的字符串需要N+1的空间)
char *r;
r=malloc(strlen(s)+1);
作为参数的数组声明
字符数组,字符指针(%s输出时从当前的字符开始逐个输入,直到遇到/0为止)
char hello[]="hello world";
printf("%s/n",hello);字符串名称
作为参数的数组毫无意义,数组名立刻转换为指向该数组第一个元素的指针
char *p=hello;
printf("%s/n",&hello[0]);
printf("%s/n",p);
输出的都是整个字符串中的东西
int a,b,c;
printf("please input a,b,c");
scanf("%d,%d,%d",&a,&b,&c);地址
printf("a=%d,b=%d,c=%d",a,b,c);变量
&的作用进入电影院看电影要入场券而出来不用入场券(printf都用变量名为参数,但是在参数为数组名时等价于传指针)
空指针不是空字符串
extern char p[]是空字符串
extern char *p可以指向任意字符串空间,指针要赋值
数组和循环的边界问题