C语言基础
hhzxzy
这个作者很懒,什么都没留下…
展开
-
c语言基础——输入输出及string操作
输出printf与put#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <math.h>int main(){ /* stdio.h常用函数 */ i...原创 2019-12-05 14:18:59 · 1006 阅读 · 0 评论 -
未定义的行为:i=i++;
分析:i=i++;1: 先算出左边的值,置为0;2: 执行i++;的+1操作.3: 将左边的值赋给i.2和3在不同编译器中经过优化后有不同的执行顺序。所以执行后i可能是0,可能是1.能运行不代表是正确的。这种写法,是C标准严格禁止的。c标准里,叫做未定义行为。i++产生的原因:在c/c++中,为了少写一行代码、或者为了和某条汇编语句对应,这颗语法糖就被加进去了。因为...原创 2019-10-25 00:52:25 · 431 阅读 · 0 评论 -
引用与指针
c语言在c99标准中加入了引用引用的值是地址,指针的值也是地址。但在编译时,会赋给 引用和指针 不同的意义。int a = 1;int *b = &a;int &c = a;引用与指针:符号在内存中存的都是地址,都占用字节编译时有不同的理解:b:*b表示变量a, b表示a地址,&b表示b的地址c:*c === *a //把a的值理解为地址,去取值 e...原创 2019-10-12 12:55:52 · 140 阅读 · 0 评论 -
c语言,常量与指针
c语言,常量与指针预想中的6种写法:const * int p; //errorconst int * p;int const * p;int * const p; * int const p; //error* const int p; //error因为 *是右结合的;const int *p; == int const *p; //const 修饰*p,即指针指向的...原创 2019-09-30 10:53:25 · 117 阅读 · 0 评论 -
extern char*与extern char[]
1.cppchar *a = "abc";char b[] = "abc";2.cppextern char a[];extern char b[];printf("%s\n",a); //乱码printf("%s\n",b);去1.cpp 找符号a, 以char【】的方式解析a,认为a是子符数组的首地址,相当于把0x00000as2323;(一个地址)理解为char,所以...原创 2019-09-30 11:18:33 · 1278 阅读 · 1 评论 -
程序执行时的内存分步
栈:系统自动分配,容量小,获得快,方便堆:手动申请, 容量大,需要手动释放,易造成内存泄漏存储:栈:子函数返回地址与参数,临时变量(包括非静态局部变量),上下文堆:malloc的空间.data: 全局变量,静态局部变量(不为0).bss: 全局变量,静态局部变量(为0的).text: 代码.rodata: string或常量const 或#define.init: ...原创 2019-10-09 20:31:10 · 74 阅读 · 0 评论 -
C语言基础 数据越界问题
#include <iostream>#include <bitset>#include<cmath>using namespace std;int main(){ cout << "测试int转bool:" << endl; //只有0才是false cout << (bool)3 <&l...原创 2019-10-10 14:57:09 · 985 阅读 · 0 评论 -
c语言复杂指针表达式分析
函数指针—指向函数的指针:#include <stdio.h>int fun1(int a){ printf("%d\n",a); return 8;}int main(){ //函数指针(指向函数的指针) int (*p1)(int); p1 = fun1; int res = p1(3); ...原创 2019-10-10 16:29:31 · 232 阅读 · 0 评论