![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程基础
worldzhy
感觉
展开
-
常量指针用在哪
int main(void) { int a = 1; int const *p; p = &a; a = 2; printf("%d\n", *p); return 0; } 本代码在VS2010中运行结果为2,说明常量指针并不能限制他所指向的实体中数据的变化。如果直接以“*p = 2;”这种方式操作是会报错的,但前面代码所用的方式跳过了这重限制。 请问常量指针用在什么情原创 2012-10-24 10:57:18 · 595 阅读 · 0 评论 -
数据结构与算法(C语言描述) 第一章 绪论
递归简论 当编写递归例程的时候,关键是要牢记递归的四条基本法则: 1、基准情形。必须有某些基准情形,它无须递归就能解出。 2、不断推进。对于那些需要递归求解的情形,每一次递归调用都必须要使求解状况朝接近基准情形的方向推进。 3、设计法则。假设所有的递归调用都能运行。 4、合成效益法则。在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。 使用递归来计算斐波那契数之类...原创 2012-08-21 21:24:57 · 517 阅读 · 0 评论 -
数据结构与算法(C语言描述) 第二章 算法分析
·如何估计一个程序所需要的时间。 ·如何将一个程序的运行时间从天或年降低到秒。 ·错信地使用递归的后果。 ·将一个数自乘得到其幂以及计算两个数的最大公因数的非常有效的算法。 摘要: 1、运行时间的计算。N的增长要快于logN的任意次幂。计算时间复杂度的基本策略是从内部(最深层部分)向外展开。 2、当递归被正常使用时,将其转换成一个简单的循环结构是相当困难的。 3、分治策略。把问...原创 2012-08-22 17:40:08 · 784 阅读 · 0 评论 -
变量存储类型
变量的存储类有什么作用? 问题解决:存储类的作用是用来说明标识符的作用域和存储期的。 C语言的变量的完全说明格式为:存储类 数据类型 变量名 存储类分为4种:auto(自动类型)static(静态变量类型)register(寄存器变量类型)extern(外部类型) 变量存储在内存的什么地方? 问题分析:变量名是一个符号地址,代表内存中的某个内存单元。 问题解决: 第一原创 2014-01-12 20:56:44 · 1749 阅读 · 0 评论 -
巧妙的代码1
输入一个long型数,按从右向左的顺序,去掉重复的数字, 最后返回没有重复数字的整型,如344变为43。 long GetConvertInt( long iInput ) { long a[10] = {0}; long iInputNum = abs(iInput); long lNum = 0; while(iInputNum != 0)原创 2013-08-16 20:33:35 · 917 阅读 · 0 评论 -
__stdcall与__cdecl的区别
1、_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 int f(void *p) -->> _f@4(在外部汇编语言里可以用这个名字引用这个函数) 2、C调用约定(即用__cdecl关键字说明)(The C default call转载 2012-11-29 21:09:16 · 512 阅读 · 0 评论 -
一个比较简单的快速排序
void swap(int v[], int i, int j) { int temp; temp = v[i]; v[i] = v[j]; v[j] = temp; } void qsort(int v[], int left, int right) { int i, last; if(left >= right) { return; } swap(v, left,原创 2012-10-13 10:21:09 · 463 阅读 · 0 评论 -
彻底搞定C指针-函数名与函数指针
http://wenku.baidu.com/view/7f4f0c3e5727a5e9856a6101.html### 彻底搞定C指针-函数名与函数指针 函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子: //自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); int main(转载 2012-09-22 15:29:18 · 829 阅读 · 1 评论 -
补码的探索
正数的补码是原码,负数的补码是反码加一。正数的反码是原码,负数的反码是原码符号位不变,其它位反转。 以下实验环境为VS2010 unsigned int a = -10; printf("0x%x", ~a); 输出:0x9 解释:当给无符号型a赋负值时,a自动变为有符号数,a在机器中的存在形式为0x80 00 00 0a的补码形式,即0xff ff ff f6。按位取反(包括符号位)变原创 2012-08-18 19:55:21 · 693 阅读 · 0 评论 -
static的作用
C语言中,static有三个明显的作用: 1.在函数体内,static声明的变量不随函数的返回而销毁,它存放在内存的数据段,数据段内还存放全局变量。 2.在模块内(函数外),static声明的变量是一个本地的全局变量,可以被模块内所有函数访问,但不能被模块外函数访问。 3.在模块内(函数外),static声明的函数只可以被模块内所有函数访问,但不能被模块外函数访问。原创 2012-08-17 21:22:43 · 496 阅读 · 0 评论 -
指针数组、数组指针等变量的声明
首先要牢牢记住一点:后缀结合变量的优先级比前缀高分析时从右往左看 以下是我的个人理解,请指正。 int a; 声明一个整型变量。 int *a; 声明一个指针,指向整型数。(指针→整型) int **a;; 声明一个指针,该指针指向另一个指针,这另一个指针指向一个整型。(指针→指针→整型) int a[10]; 声明一个数组,里面有10个整型。 int *a[1原创 2012-08-17 20:41:27 · 704 阅读 · 1 评论 -
字符串常量
char *a = "abcd"; a[0] = 'e'; 会出错,“abcd”是字符串常量(const),给a[0]赋值是不合法的。 char a[ ] = "abcd"; a[0] = 'e'; 合法。 请问前后两个"abcd"有什么区别吗?原创 2012-08-18 14:53:38 · 396 阅读 · 0 评论