C/C++
latte_coffee
这个作者很懒,什么都没留下…
展开
-
关注C++细节---C++11新标准之decltype的使用注意
转载自:CSDN iaccepted 凌风,博客地址:http://blog.csdn.net/iaccepteddecltype是C++11添加的一个新的关键字,目的是选择并返回操作数的数据类型,重要的是,在此过程中编译器分析表达式并得到它的类型,却不实际计算表达式的值。对于内置类型的对象,使用decltype很直观,但当参数为复合类型的时候就应该注意一些使用细节问题。转载 2015-04-28 15:46:22 · 442 阅读 · 0 评论 -
C语言文件输入数组输出小代码
要求:从.txt文件读入数据,文件中数据有100行4列。输出要求各列输出一个数组,一列一个数组。#include<stdio.h>#include<stdlib.h>#define N 4 //4列#define L 100 //100行const char file_name[50] = "d:\\a.txt";int main(int argc, char *argv[]){原创 2015-08-10 15:30:16 · 1362 阅读 · 0 评论 -
字符串操作函数的一些细节问题
最近在写一个数据库的部分数据显示工具,然后把结果以表格形式输出时需要很多的字符串操作函数和多维数组及指针的操作,对其理解更多,现在总结一下。1、strcpy 、strncpy 和 strlcpy 函数strcpy原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest原创 2015-08-07 15:20:35 · 884 阅读 · 1 评论 -
fscanf函数
参考连接:http://blog.csdn.net/misskissc/article/details/25137335 原型:int fscanf(FILE *stream, char *format,[argument…]);返回值:整型,数值等于[argument…]的个数FILE*fp;char a[10];int b;double c;fscanf(fp,"%s%d%lf",a,原创 2015-08-10 15:35:56 · 506 阅读 · 0 评论 -
结构体成员偏移量
今天在研究计算C语言中,结构体成员的偏移量问题。发现一个宏定义就可以计算得到,在这里记录一下。#define offsetof(type, field) (long)&(((type*)0)->field)其含义是:在不生成结构体实例的情况下计算结构体成员的偏移量。 结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量 (type*)0,就是假设地址0处存放原创 2015-07-28 17:01:42 · 1111 阅读 · 0 评论 -
多维数组和指针操作
一维数组名即是一个指针常量,它代表数组第一个元素的地址,我们知道一维数组的长度,那么可以通过数组名输出一维数组的所有元素:#include <stdio.h>int main(void){ int i; int a[5] = {1, 2, 3, 4, 5}; int *p = a; for( i = 0; i < 5; i++ ) printf( "原创 2015-08-07 15:37:26 · 406 阅读 · 0 评论 -
uint64 和字符串相互转换
uint64转换成string snprintf函数声明int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);例如:snprintf(string,sizeof(string),"%ju",GID);string转换成uint64GID=strtoull(pszValue, NULL, 0);原创 2015-08-07 15:57:32 · 24391 阅读 · 0 评论 -
Socket收发数据浅析
作为一个套接字描述符,它拥有两个缓冲区,分别为接收数据缓冲和发送数据缓冲区,当套接字有数据到达时,首先进入的就是接收数据缓冲区,然后应用程序从这个缓冲区中将数据读出来,这就是套接字recv的过程,应用程序调用send发送数据实际是把数据拷贝到发送数据缓冲区,再由系统在缓冲区的数据发送出去。缓冲区的大小可以用SetSocketOpt()设定,同时操作系统对它有一个默认大小。 当套接字接受数据缓冲区满转载 2015-07-25 15:28:28 · 2124 阅读 · 0 评论 -
assert(0)的作用
今天在看框架例子的代码里,发现很多地方没有做什么,就只是错误检查,然后后面就会跟一个assert(0),比较奇怪这个用意,所以特意差了一下记录在这里。定义assert宏的原型定义在#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,原创 2015-07-08 15:46:09 · 15546 阅读 · 0 评论 -
C语言一些细节
1、gets()方法gets()函数是用来接受一个字符串的函数,此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。由于gets()无法知道字符串的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓存溢出的安全性问题。建议使用fgets()取代。现在用个小程序说明一下到底有什么危害。 1 #include <stdio.h> 2 int main(void原创 2015-06-18 22:06:11 · 469 阅读 · 0 评论 -
读《C专家编程》笔记-第三章 分析C语言的声明
typedeftypedef为一种类型引入新的名字,而不是为变量分配空间。在某些方面typedef类似于宏文本替换-它并没有引入新类型,而是为现有类型取个新名字,但他们之间存在一个关键性的区别。typedef看上去跟变量声明完全一样,普通的声明表示“这个名字是一个指定类型的变量”,而typedef关键字并不创建一个变量,而是宣称“这个名字是指定类型的同义词”。 必须注意typedef的缺点原创 2015-10-26 15:59:16 · 462 阅读 · 0 评论