C语言——杂实例
时间:2022-07-24
本文章向大家介绍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=%dn",a,b);
swap(&a,&b);
printf("After swap a=%d b=%dn",a,b);
real_swap(&a,&b);
printf("After swap a=%d b=%dn",a,b);
char *buffer = (char*)&a;
memorylocate(&buffer);
strcpy(buffer,"12345");
printf("buffer %sn",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 failedn");
return -1;
}
if(NULL == cp)
{
printf("malloc failedn");
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("%dn", *(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%0xn",&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 ...
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 第二节:Activiti6.0配置文件的读取
- SpringMvc配置文件上传
- 使用web.xml配置SpringMvc(使用Java加载配置)
- SpringMVC配置字符过滤器的两种方式
- SpringMvc使用Json(Java配置方式)
- 使用IDEA创建SpringMvc并整合Thymeleaf(Java配置版)
- Junit报错:Argument(s) are different! Wanted:
- RocketMQ使用过滤器filterServer(4.3版本后)
- Python+Appium运行简单的demo,你需要理解Appium运行原理!
- 网站日志分析完整实践【技术创造101训练营】
- HTML前端知识
- 掌握 AST,轻松落地关键业务「技术创作101训练营」
- 一文轻松学会linux字符设备驱动
- leetcode树之N叉树的前序遍历
- 2020-09-20:如何判断一个数是质数?