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 ...
随机推荐
- C#-弄懂泛型和协变、逆变
脑图概览 泛型声明和使用 协变和逆变 <C#权威指南>上在委托篇中这样定义: 协变:委托方法的返回值类型直接或者间接地继承自委托前面的返回值类型; 逆变:委托签名中的参数类型继承自委托方法 ...
- 回顾Servlet及SpringMVC
什么是Servlet? Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库 或应用程序之间的中间层. servlet架 ...
- 【LeetCode 76】最小覆盖子串
题目链接 [题解] 尺取法. 用l和r代表一个合法的覆盖子串. 我们不断地扩大右指针. 直到l..r包含T中的所有字母为止(重复的就要两次以上.) 然后我们可以尝试的让l++. 看看新的l..r是不是 ...
- java 序列化机制
package stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io ...
- paper 157:文章解读--How far are we from solving the 2D & 3D Face Alignment problem?-(and a dataset of 230,000 3D facial landmarks)
文章:How far are we from solving the 2D & 3D Face Alignment problem?-(and a dataset of 230,000 3D ...
- SaltStack(自动化运维工具)
SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境.SaltStack作用于仆从和主拓扑.SaltStack与特定的命令结合使用可以在一个或 ...
- LUOGU P3759 [TJOI2017]不勤劳的图书管理员(树套树)
传送门 解题思路 和以前做过的一道题有点像,就是区间逆序对之类的问题,用的是\(BIT\)套权值线段树,交换时讨论一下计算答案..跑的不如暴力快.. 代码 #include<iostream&g ...
- Gym-100676F Palindrome
原题连接:https://odzkskevi.qnssl.com/1110bec98ca57b5ce6aec79b210d2849?v=1491063604 题意: 多组输入,每一次输入一个n(字符串 ...
- 116、TensorFlow变量的版本
import tensorflow as tf v = tf.get_variable("v", shape=(), initializer=tf.zeros_initialize ...
- jenkins构建后操作archive the artfacts的用法
参考: https://blog.csdn.net/liqiangeastsun/article/details/79062806 Jenkins构建完成存档 Archive the artifact ...