![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
大米粒ing
只有很努力才能看起来毫不费力
展开
-
自己收集的c语言学习网站
http://coolshell.cn/articles/945.html 酷壳 -CoolShell.cn原创 2013-01-23 11:10:50 · 768 阅读 · 0 评论 -
C语言中restrict关键字学习
简介:restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如 int *restrict ptr, ptr 指向的内存单元只能被 ptr 访转载 2013-09-02 20:58:13 · 5418 阅读 · 0 评论 -
指针-->字符串
1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符。如在代码中写"abc",那么编译器帮你存储的是"abc\0"。2. "abc"是常量吗?答案是有时是、有时不是。不是常量的情况:"abc"作为字符数组初始值的时候就不是,如:char str[] = "abc";因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"abc"原创 2013-09-02 23:55:08 · 841 阅读 · 0 评论 -
C语言浮点数解惑
前言 有些C语言书上说float型的有效位数是6~7位,为什么不是6位或者7位?而是一个变化的6~7位? 浮点数在内存中是如何存放的? float浮点数要比同为4字节的int定点数表示的范围大的多,那么是否可以使用浮点数替代定点数? 为什么float型浮点数9.87654321 > 9.87654322不成立?为何10.2 -原创 2013-08-12 19:15:49 · 8090 阅读 · 6 评论 -
C++四种强制类型转换详解
什么是类型转换? 类型转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。C与C++的类型转换//C中://复制代码 代码如下:(T)element 或者 T(element)//c++中://复制代码 代码如下:reinterpret_cast (expression)dynami原创 2013-08-23 01:15:05 · 2384 阅读 · 0 评论 -
C/C++中的内存地址分配问题
参考网上他人写的博客,感觉不是很符合,内存的从到到底的分配顺序不符,或许是每个编译器都不十分一样,我也无法做出合理解释,但是作者所讲的各个内存区的分配是完全吻合的,本人再最后的程序作了修改,已验证我的结果。C\C++中的内存地址分配模型说明: 1、程序代码区:存放函数体的二进制代码。 2、全局区数据区:全局数据区划分为三个区域。全局变量和静态变量的存储是放在一块的,原创 2013-08-21 16:27:58 · 2063 阅读 · 0 评论 -
C/C++ 变量字节的高位、地位
就拿自由变量来说:1. 自由变量分配地址是从高地址 -> 低地址的2.多字节的变量,高位在高地址,低位在低地址。测试: #include int main (){ int x = 0x00f00fff; int y = 0xfff00f00; unsigned char *px1,*px2,*px3,*px4; unsigned char *py1,原创 2013-08-21 17:25:26 · 5049 阅读 · 2 评论 -
C语言头文件组织
一、全局变量单独编写(很值得借鉴)。一般习惯将不同功能模块放到一个头文件和一个C文件中。例如是写一些数学计算函数://mymath.h#ifndef _mymath_H#define _mymath_Hextern int Global_A; //声明必要的全局变量......extern void fun(); //声明必要的外部函数.....#endif//mym原创 2013-07-26 13:35:51 · 3131 阅读 · 1 评论 -
C 专家编程 笔记(一、二、三章)
1.编辑器设计者的金科玉律:效率(几乎)就是一切2.阅读ANSIC标准 , 寻找乐趣和裨益具体的ANSI C标准的规定我都不说了,从中看出 char * 类型是可以作为参数专递的,但是char** 是不行的,所以我们传递多维数组的时候要表明确前n-1维的下标3.容易混乱的constint main(int argc, char* argv[]){ //定原创 2013-03-19 16:06:12 · 1314 阅读 · 0 评论 -
C语言的变量的内存分配
今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了。。。先看一下两段代码:char* toStr() { char *s = "abcdefghijkl"; return s;}int main(){ cout << toStr() << endl; return 0;}和char* toStr() { ch原创 2013-07-26 00:57:17 · 13148 阅读 · 11 评论 -
c缺陷与陷阱
========================== 《c缺陷与陷阱》笔记 ==========================-- chap.1 --1. 防御性编程任何编译器都无法捕捉到所有错误,况且C语言的安全系数较低(较Cpp),因此编程时采取一些防御措施是很好的习惯。if (c == '\t') //容易发生if (c = '\t')的误写,编译器原创 2013-07-25 18:12:33 · 2931 阅读 · 0 评论 -
通过qsort(void * lineptr[], int left, int rifht, int (*comp)(void *, void *))解读指针函数和void指针
原函数是《The C programint language 》5.11问本行排序的程序,如下:void qsort(void *v[], int left, int right, int (*comp)(void *,void *)) { int i,last; if( left >= right) return; swap(v,left,(left+原创 2013-07-22 01:45:45 · 1807 阅读 · 1 评论 -
void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需要强制类原创 2013-03-16 19:47:03 · 862 阅读 · 0 评论 -
getchar()和EOF总结
我看了其他的博客关于getchar()和EOF,我自己琢磨后,把感觉没有用的删除了,有必要记住的增添进去了。#define EOF -1 如果以下有不对的地方请指正,谢谢。一、getchar是以行为单位进行存取的。当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组原创 2013-07-18 20:28:14 · 1389 阅读 · 0 评论 -
C语言文件操作
1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件3.文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;4.打开文件在使用文件之前,需打开文件.在C里使用fopen函数打开文件.格式为:fopen(文件名,文件使用方式);此函数返回一个指原创 2013-03-05 22:28:01 · 859 阅读 · 0 评论 -
C语言编程时出现 “ld.exe窗口” 错误
出现“ld.exe窗口”错误原因:就是源程序还在运行,有可能是程序出现什么问题,可是还在进程中运行着。 解决办法:调出"任务管理器" 找到 程序运行的那个进程,结束掉就OK了!原创 2013-07-11 17:02:30 · 3846 阅读 · 0 评论 -
c语言 随机函数详解
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int转载 2013-03-07 23:05:56 · 36782 阅读 · 2 评论 -
C 程序编译执行过程
C程序编译执行过程认识C编译执行过程,是C学习的开端。简单说C语言从编码编译到执行要经历一下过程: C源代码编译---->形成目标代码,目标代码是在目标机器上运行的代码。连接---->将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)。执行----->在特定的机器环境下运行C程序。 如果用一个图 来转载 2013-03-04 20:51:09 · 929 阅读 · 0 评论 -
(int)a、&a、(int)&a、(int&)a的区别
#include #include #include #include using namespace std;int main(){ float a = 1.0f; cout << sizeof(int) <<endl; //4 cout << sizeof(float) <<endl; //4 cout << (int)a << endl; //1 cou原创 2013-10-04 00:26:56 · 2906 阅读 · 0 评论