c
半雨微凉丶
这个作者很懒,什么都没留下…
展开
-
strcpy越界拷贝问题
面试中遇到的一个问题,这里简单总结一下(仅供参考~)1、示例1int main(){ const char *str = "123"; char str1[3]; strcpy( str1, str ); printf( "%s", str1 ); system("pause"); return 0;}运行结果:(VS2017)...原创 2019-04-04 15:11:54 · 590 阅读 · 0 评论 -
scanf_s输入%d%c%d格式错误问题
例题:定义变量a,b,c,输入1+2,结果a=1,b=+,c=2错误实例:int a,c;char b;scanf_s("%d%c%d",&a,&b,&c);乍一看,没啥问题,但是一运行输入就会报错。解决方案:1、使用scanf,上边的代码就没问题2、如果使用scanf_s,就要加上输入长度,如下scanf_s("%d%c...原创 2018-10-30 08:22:47 · 7923 阅读 · 9 评论 -
C++与C区别随笔记录
1、全局变量#include <stdio.h>int a=100;int a;void main(){ printf("%d\n",a);}//C语言中以上写法是可以的#include <iostream>using namespace std;int a=100;int a;void main(){ cout&l...原创 2018-09-26 18:18:19 · 118 阅读 · 0 评论 -
C基础知识点 - 温故而知新
1、变量一般有字符数量限制,如果超过了就截取有效位数2、常量不能修改,不占内存3、printf输出多进制printf("%o %d %x") 不带前缀printf("%#0 %#d %#x") 带前缀4、getchar()返回输入的第一个字符,所以输入多的的话也只返回第一个字符5、printf("*d",var1,var2) 使用可变宽度输出,*代表一个变量6、*在scanf中表...原创 2018-06-30 15:05:56 · 174 阅读 · 0 评论 -
stack
顾名思义,就是栈。一、作为一种数据结构,具有后进先出的特点。也就是新加入的数据放在最上层,使用的时候最上层的数据先甩出。二、从内存方面来看,通过与heap(堆)得比较来说明stack:有结构,每个区块按照一定次序存放,可以明确知道每个区块的大小,寻址速度快于heap,大小确定heap:没有结构,数据任意存放,大小不确定,可以不断增加每个线程分配一个stack,每个进程分配一个h原创 2013-12-19 16:14:22 · 523 阅读 · 0 评论 -
大端小端
一般来说,在windows下的内存布局是小端,UNIX下的内存布局是大端。比如对于0x12345678,windows下内存排列为[12] [34] [56] [78],地址位由高到低,为小端;UNIX下内存排列为[78] [56] [34] [12],地址位由低到高,为大端C代码测试如下;#include "stdafx.h"int _tmain(int argc, _TCHA原创 2013-09-14 15:33:55 · 566 阅读 · 0 评论 -
结构体初始化
如果一个结构体有若干项,而我们只需要其中几项,只要对其进行默认初始化就可以了注意赋值顺序与变量声明一致例如:#include "stdafx.h"struct MyRect{ int x; int y; int Height; int Weight;};int _tmain(int argc, _TCHAR* argv[]){// MyRect rect =原创 2013-08-14 09:57:57 · 689 阅读 · 0 评论 -
参数传递
先看如下例子:#include "stdafx.h"void Function(int x){ printf("x = 0x%x\n",&x); x += 100;}int _tmain(int argc, _TCHAR* argv[]){ int a = 100; Function(a); printf("a = %d\n",a); printf("a = 0x%x\原创 2013-08-13 16:35:39 · 542 阅读 · 0 评论 -
#define 和 typedef
对于一般如int,float等类型时两者等同,当指针类型时typedef更容易达到我们想要的结果如:#define HEIGHT int*typedef int* HEIGHT;对于 HEIGHT a,b;前者定义的两个类型是 int * 和 int后者定义的两个类型是 int* 和 int*明显,我们想要的后者。原创 2013-08-08 11:23:24 · 433 阅读 · 0 评论 -
改变入口函数
一般来说,函数的入口函数都是main,不过这并不是一成不变的。如下例:#include "stdio.h"void print(){ #pragma comment(linker,"/entry:print") #pragma comment(lib,"msvcrt.lib") puts("Hello everyone!\n");}原创 2013-07-05 11:10:28 · 736 阅读 · 0 评论 -
指针运算
先看如下例子:#include "stdio.h"int main(){ int *p = (int*)1000; int *q = (int*)2000; printf("p = %d,q = %d \n",p,q); printf("%d\n",p-q); return 0;}运行结果:p = 1000, q = 2000;p - q = -250;原创 2013-07-05 15:31:43 · 560 阅读 · 0 评论 -
文件操作函数之ftell
函数介绍:long ftell(文件指针)用于得到文件指针当前位置,返回相对于文件首的位移量,一般结合 fseek 函数一起使用。简例:#include "stdafx.h"#include "stdio.h"#include "process.h"int main(int argc, char* argv[]){ //get length of the file F原创 2013-06-20 09:34:52 · 634 阅读 · 0 评论 -
文件操作函数之rewind
介绍:rewind(文件指针) 使位置指针返回文件开头,无返回值例子:#include "stdafx.h" #include "stdio.h" #include "process.h" int main(int argc, char* argv[]) { FILE * fp; char ch; if ((fp =原创 2013-06-20 15:48:28 · 1147 阅读 · 0 评论 -
文件操作函数之fseek
介绍:fseek(文件指针,位移量,起始点)其中位移量是long型数据,常量时需要后缀“L”起始点包括文件首、文件当前位置和文件尾,分别用0、1 和 2 表示。例子:#include "stdafx.h"#include "stdio.h"#include "process.h"int main(int argc, char* argv[]){ FILE *fp原创 2013-06-19 16:11:08 · 941 阅读 · 0 评论 -
__int64、ULONGLONG格式化输出
Tips:打印日志信息的时候出现的问题,虽然很小,也算提个醒~Code: //不考虑溢出的情况 ULONGLONG n1 = 100; printf("%d\n",n1); __int64 n2 = 100; printf("%d\n",n2); //此处是个坑。。。 printf("%d %d\n",n1,n2);//100 0...原创 2019-08-17 10:45:43 · 4623 阅读 · 0 评论