C语言——杂实例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void f (int **p);
void change(int *tmp_t)
{
*tmp_t =1;
return;
}
/*
这个函数才是真正的交换
*/
void real_swap(int *real_a, int *real_b)
{
int real_tmp;
real_tmp = *real_a;
*real_a = *real_b;
*real_b = real_tmp;
}
void swap(int *a1,int *b1)
{
int *tmp=NULL;
tmp=a1;
a1=b1;
b1=tmp;
}
void memorylocate(char **ptr)
{
*ptr=(char *)malloc(1*sizeof(char));
}
int main(void)
{
int a=2;
int b=3;
const char *ptr = (char*)&a;
/*常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,
常量指针可以指向其他的地址。
*/
ptr = (char*)&b;//is legal
/*常量指针说的是不能通过这个指针改变变量的值,
但是还是可以通过其他的引用来改变变量的值的。*/
//*ptr = (char)5; //error: assignment of read-only location
b = 5;
a = 9;
int *m = &a;
int * const npt = &a;
a = 9;
*npt = 18;
*m = 20;
/*指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的,可以通过其他指向改地址的指针来修改。
*/
//npt = &b; error: assignment of read-only variable `npt'
printf("Before swap a=%d b=%d\n",a,b);
swap(&a,&b);
printf("After swap a=%d b=%d\n",a,b);
real_swap(&a,&b);
printf("After swap a=%d b=%d\n",a,b);
char *buffer = (char*)&a;
memorylocate(&buffer);
strcpy(buffer,"12345");
printf("buffer %s\n",buffer);
int bita = 0;
bita = bita | (0x1f << 3) | (0x07 << 23);
bita = 0;
//bita |= ('0b'11111<<3);
//int * p = (int * ) malloc (4 * sizeof(int));
int * p = (int * ) malloc (8);
char * cp = (char * ) malloc (4 * sizeof(char));
if(NULL == p)
{
printf("malloc failed\n");
return -1;
}
if(NULL == cp)
{
printf("malloc failed\n");
return -1;
}
*(p+0) = 1;
*(p+1) = 3;
*(p+2) = 5;
*(p+3) = 4;
*(cp+0) = 1;
*(cp+1) = 3;
*(cp+2) = 5;
*(cp+3) = 4;
//*(p+4) = 6; //编译通过,但无法运行。
printf("%d\n", *(p+3));
free (p);
free (cp);
// int i=90;
// *(int *)0x28ff00 = 0x130;
//// int n =0,*p = &n,**q = &p;
//// double *b = (double *)malloc(sizeof(int));
//// b=0;
//// b=NULL;
// printf("0x%0x\n",&i);
// printf("Hello world!\n");
//
// int * a ;
// a = NULL ;
// f (&a);
// printf("%d",*a);
// free(a);
//
// int in = 11;
// int *p, *q;
//
// p = ∈
// q = &p;
//
// *p = 40;
// //(**q) = 60;
// int tmp = 0;
//
// change(&tmp);
//
// printf("################ tmp = %d /n");
// ;
//
return 0;
}
/*
c语言实现函数给主函数中的指针赋值的方法
*/
void f (int **a)
{
*a = (int *)malloc (sizeof (int )) ;
**a = 1 ;
}
Before swap a=20 b=5
After swap a=20 b=5
After swap a=5 b=20
buffer 12345
4
Terminated with return code 0
Press any key to continue ...
C语言——杂实例的更多相关文章
- MATLAB与C语言对比实例:随机数生成
MATLAB与C语言对比实例:随机数生成 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.整型随机数生成函数 1.C语言程序 int intrand ...
- R语言入门级实例——用igragh包分析社群
R语言入门级实例——用igragh包分析社群 引入—— 本文的主要目的是初步实现R的igraph包的基础功能,包括绘制关系网络图(social relationship).利用算法进行社群发现(com ...
- c语言字符串实例
例子:涉及字符串.字符.指针.++等 例一:字符串与字符 #include <stdio.h> void reverse(char *str) { char *end=str; print ...
- c语言编程实例——小球跳动
1.预备知识 1.1 相关头文件 "#include"是c语言中用以申明所需调用的库函数或自定义函数的头文件路径及文件名.#include ""和#includ ...
- R语言学习——实例标识符
> patientID<-c(1,2,3,4)> age<-c(25,34,28,52)> diabetes<-c("Type1"," ...
- 分离链接散列表C语言实现实例
/* hash_sep.h */ #ifndef _HASH_SEP_H #define _HASH_SEP_H #define MIN_TABLE_SIZE 5 struct list_node; ...
- 在Golang中使用C语言代码实例
转自:http://www.jb51.net/article/56720.htm cgo 使得在 Golang 中可以使用 C 代码. Hello World 为了有一个较为直观的了解,我们来看一个简 ...
- go语言基础实例
一:变量 1)变量声明 func main() { var v1 int var v2 int //一次声明多个变量 var ( v3 int v4 int ) //变量最开始会有一个零值 fmt.P ...
- C语言链表实例--玩转链表
下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 n ...
随机推荐
- postgre存储过程或者视图中"::"双冒号是什么意思
双冒号是类型转换的意思. 比如: '2019-09-10'::date
- UiAutomator和Appium之间的区别2
UiAutomator和Appium之间的区别和联系 联系: 在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实 ...
- 【锁】MySQL和Oracle行锁比较
InnoDB INNODB表是索引组织的表,主键是聚集索引,非主键索引都包含主键信息. INNODB默认是行锁. INNODB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才 ...
- 【LeetCode 84】柱状图中最大的矩形
题目链接 [题解] 维护一个单调递增的栈. 会发现栈内的第i个元素的前面一个(i-1)元素在原始的序列中的数字 都是要高于第i个元素的.(或者没有元素) 那么第i个元素往左最多可以扩展到第i-1个元素 ...
- Python基础教程(020)--集成开发环境IDE简介--Pycharm
前言 学会掌握Pycharm工具 内容 集成了开发软件需要的所有工具 1,图形用户界面 2,代码编译器(支持代码补全,自动缩进) 3,编译器,解释器 4,调试器(断点,单步执行) Pycharm介绍 ...
- C#版简易RSS阅读器
C#版简易RSS阅读器.由VB版修改完成,感谢aowind的技术支持! 源代码: using System; using System.Drawing; using System.Collection ...
- java高并发解决思路
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...
- UE编辑器
引用ue的js 下载地址http://pan.baidu.com/s/1gdrQ35L <script type="text/javascript" src="__ ...
- jquery 合并两个 json 对象
jQuery.extend( [ deep ], target, object1, [ objectN ] )合并对象到第一个对象 //deep为boolean类型,其它参数为object类型 var ...
- 如何为mysql建立索引
前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过 ...