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 ...
随机推荐
- Linux自用指令——2019年10月23日
1.ls ls命令是列出目录内容(List Directory Contents)的意思.运行它就是列出文件夹里的内容,可能是文件也可能是文件夹. ls -a 列出目录所有文件,包含以.开始的隐藏文件 ...
- Ubuntu新建用户组
新建用户组 sudo addgroup groupname 把现有用户加入新建的用户组 sudo adduser username groupname
- 【leetcode】1022. Smallest Integer Divisible by K
题目如下: Given a positive integer K, you need find the smallest positive integer N such that N is divis ...
- tensorflow函数介绍(1)
tensorflow中的tensor表示一种数据结构,而flow则表现为一种计算模型,两者合起来就是通过计算图的形式来进行计算表述,其每个计算都是计算图上的一个节点,节点间的边表示了计算之间的依赖关系 ...
- python 爬取<a>标签内href的方法及遇到的问题
原博客地址: https://www.cnblogs.com/dengyg200891/p/6060010.html # -*- coding:utf-8 -*- #python 2.7 #XiaoD ...
- 4412 RS485
一.485硬件原理 差分对传输数据的原理 IO数据的传输→差分对 rs232传输的距离在15米以下,RS485传输距离是几十米到1000米以上 为什么485可以传输这么远 差分对的机制可以降低电磁场的 ...
- JS获取浏览器地址栏的多参数值的任意值
常用的几个方法就不讲了,这里我用的是两个方法组 使用方法是: getParamValue("id"); http://localhost:2426/TransactionNotes ...
- Linux配置Selenium+Chrome+Python
---恢复内容开始--- 最近一个月没有更新博客了.最近都在复习LINUX与PYTHON知识.决定以后在LINUX环境下学习新知识. 包括后期的框架学习与平台知识方面. 直接记录今天下午的学习成果. ...
- Configuring IPMI under Linux using ipmitool
http://www.thomas-krenn.com/en/wiki/Configuring_IPMI_under_Linux_using_ipmitool Configuring IPMI und ...
- 如何消去delphi Stringgrid重绘时产生重影
procedure TForm1.Stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGrid ...