- for(a;b;c)中 如果b处是i=0 0是假,直接跳出循环, 还是要分清楚= 和== 的区别
b处 如果是赋值就死循环,如果是0就跳出循环
- 数组名==首元素地址(有两个例外)
(1).sizeof(数组名)——在这里数组名表示整个数组的大小,,sizeof计算的是整个数组的大小,单位是字节.
(2)&数组名,数组名表示整个数组,&数组名,取出的是整个数组的地址
&arr-数组的地址
-
在vs中使用scanf_s代码不具有兼容性 在其他编译器上不认识 它本身不是C语言的函数
-
在C99之前 数组的大小只能是常量 vs2019对C99的支持不是很好,不支持变长数组(使用变量来指定大小)
当n被const修饰之后,不可以用来指定数组大小(本身还是变量) C99之前
-
#define定义的标识符常量是不可以改变的 但是他可以去定义数组大小(本质是常量)
-
使用枚举的时候,要注意:
- 后面不加()并且
- 结尾的}后面要加’;’
- 在函数体中间用,来分割
- 类似于数组,enmu的返回值也是从0开始,逐个递增+1的
-
注意定义,输入的类型
-
注意表达式的运算顺序,适当加入括号
-
首先先逐字读题 理解错题是最浪费时间的
-
int main() { char arr[] = "hello world"; char* ret = (char*)memset(arr, 'x', 5);//这里需要强制类型转换成char* 再接收 printf("%s", ret); return 0; } -
ACM模式不需要输入输出
-
函数不好反悔的时候 ,可以不返回,直接在main函数中使用
-
int arr[40]={0}; 将所有的元素都初始化为0
-
EOF是全文件结束的标志
ch== getchar()!=0;
~(ch==getchar())
分别两种写法
-
注意函数递归的时候:
如果需要地址平移的话 不可以p++
++p也不好,传参之后本身的值会改变
只有p+1不会影响变化
并且要注意 指针变量+1的时候,不同类型的变量 向后走的字节单位不同,
例如 char 跳一个字节 int 跳4个字节
-
比较求最大值的时候 ,可以先给max=a;然后依次比较max与b,c,d等之间的大小
并且如果有循环读取的时候需要判断是否=EOF max的值每次进循环都需要重新赋值
-
整数在内存中储存的是补码!
-
'\n’是一个字符 要用getchar()来吞掉
两种形式:
1.while(ch=getchar()!=EOF)
getchar();
2.while(scanf(" %c",ch)!=EOF) 这种方法更好
-
scanf(" %c",&i)
这里 %c前面加上空格键 可以消除前面所有的空白字符(输入的时候就会消化掉这个\n) 从而不需要使用getchar()去吞\n
不会为下次留下空白字符的隐患
-
不可以return a,b;
一个函数只能返回一个结果
这里涉及了逗号表达式(前面的依次执行,以最后一个为条件进行判断)
-
函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归
但是函数不可以嵌套定义
-
函数不是必须有返回值,但是必须有返回类型
函数不是必须含有参数,
-
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型
-
不允许用库函数的时候,可以自己自定义一个一样的函数即可
本文探讨了C语言中的for循环条件判断,区分赋值和比较,数组sizeof和地址运算,以及C99标准对数组和常量的影响。还讲解了#define常量、枚举使用注意事项,以及函数返回值、嵌套、输入输出处理和常见编程技巧。

4121

被折叠的 条评论
为什么被折叠?



