整理平时遇到的菜鸟级c/c++症状(补充...)
来源:互联网 发布:php fpm 编辑:程序博客网 时间:2024/05/01 08:48
btw:by the way
IMHO:in my humble opinion
纯c语言的语法与c++中兼容的c还是有少量的区别的。或者说c++的某些语法实现了c语言不具有的特性,或者来自于c99新规范。
<1>数组大小的定义和变长数组(未解决)
c89中必须使用宏定义的常量,或者是常量表达式
c++/c89中要求数组的大小必须是整数常量表达式
通过define定义的常量,与const定义的常量的区别:define定义的并不是一个变量,而是一个Compile-Time概念,编译时只做相应的文本替换,而不会为其分配存储空间,没有具体的数据类型。const定义的变量,会在堆栈中分配空间,是一个Run-Time概念,能够通过变量操作(比如取地址操作),编译器会对其进行类型检查。const常量存在于程序的数据段,#define常量存在于程序的代码段。#define 定义的一般常数应用,run-time角度时间和空间上都有优势,compile-time角度会有常量折叠优化,而const常量要在run-time执行。
gcc如果要支持c99语法需要先开启c99 mode,或者gcc -std=c99 main.c -o main
<2>.c-style-string与c++ string类型的差异
比较(==,>=等比较运算符):
赋值/构造:
<3>c语言中指针数组如何分配空间或者如何使用
形如char *s[s_size]
<4>空字符,空格字符
空字符(NULL character),ASCII码为ox0,通常作为c-style-string的结束字符。
空格符,ASCII码为ox20
<5>scanf的使用,以及数组字符串和指针字符串在用scanf输入时的区别。
scanf的"%[..]"使用
%[…]如果输入的字符属于方括号内字 符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。%[^…]如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属于就提取该字符。这两种方法会自动加上一个字符串结束符到已经提取的字符后面。如使用这种方法,可以使用scanf输入含有空格的字符串。默认情况下,scanf忽略前导的空白字符,并且在遇到空格或换行时停止。
char *pstr = (char *) malloc(pstr_size * sizeof(char));char str[str_size];scanf("%[^\n]",str);//输入含有空格的字符串//scanf("%[^\n]",&str);//这里有对字符串名取地址,仍然可行scanf("%s",pstr);//scanf("%s",&pstr);//这样就不可行我的理解是:这就会牵涉到数组与指针的微妙的不同,并不是任何时候数组就会被解析成指针的,scanf函数的的参数有两部分构成,前一部分是parameter format来标注输入值的类型,后一部分是一组保存输入值的指针,它们指向为待保存objects的内存空间。
比如:
char *argv[] = {"hello","world!"};char **argv = {"hello","world!"};//这样是不正确的scanf("%[^n]",a);getchar();前一句表示读入字符读直到读到字符\n结束,如下:scanf("%[^\n]",a);getchar();//scanf()把所有字符全提取,\n就给getchar();<6> 算术表达式求值过程中,中间结果如何保存。会不会有类型转换的可能?
long long ans;//long long n;int n;//如果n很大ans超过了int可表示的范围,ans输出会为负数ans = (n * n - n + 6) * ( n + 1) / 6;//cout<<ans<<endl;printf("%lld\n",ans);我猜测:一定是在处理中使用n的类型保存计算的中间结果,导致溢出。
- 整理平时遇到的菜鸟级c/c++症状(补充...)
- 平时遇到的问题整理
- 整理平时IOS调试中遇到的问题
- 平时遇到的笑话
- 平时遇到的问题
- c、c++中常考的基本知识点(遇到就补充)
- 平时编惯习惯总结(C)
- c~c++的基础知识2(补充c)
- 平时遇到过的问题
- 平时遇到的问题记录
- 平时遇到的问题总结
- C补充
- C语言:近日学习遇到的问题整理
- C程序设计入门级(一个菜鸟的自我救赎)
- 平时遇到的编程问题的记录(1)
- 菜鸟的脚步(C语言)
- C/C++开发平时用的自定义debug函数
- 平时、工作、学习遇到或解决的问题(前端)
- getComputedStyle
- 深入浅出FFMPEG(精华)
- vim命令-查找字符串
- 图片定时显示效果
- Visual C++线程同步技术剖析
- 整理平时遇到的菜鸟级c/c++症状(补充...)
- tiny6410温度传感器2(测试中)
- HibernateCallback()详解
- Configuring Port Channels
- windows环境变量的申明
- WP_Windows Phone 7 SDK 官方正式版
- MFC 扩展库 - CJ60Lib的介绍
- c++基本类型定义
- linux 守护进程