C语言
Configure-Handler
这个作者很懒,什么都没留下…
展开
-
flock给文件加锁
flock文件锁原创 2022-11-12 11:35:34 · 316 阅读 · 0 评论 -
指针地址的强制转换(二)
0x01:代码intmain(){ int a[4]={1,2,3,4}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1); printf("%x,%x",ptr1[-1],*ptr2); return 0;}这个题目百度问答里边有回复的,但是存在问题,我们一起康康;0x02:代码分析ptr1: 将&a+1 的值强制转换成int类型,赋值给int 类型的变量ptr,ptr1 肯定指到数组a 的下一个int 类型原创 2020-12-17 14:07:49 · 1491 阅读 · 1 评论 -
C 将数据存储到指定内存地址
网上看到这么一篇文章,笔者这里做个笔记,顺便在VS下调试康康,眼见为实,在vs2017上调试;1.VS下断点,断在需要调试的位置,我们断在i赋值完成之后:2.开始调试:3.添加监视点,在代码区域右击弹出选项选择快速监视,我们要查看的是i的地址,所以监视表达式为&i;从图上看出,此时编译器为变量i分配的内存地址为0x12ffc04,让后强制类型转换让指针p指向这个内存地址,然后将0x1000赋值;#include <iostream>int main(){ int原创 2020-12-17 10:17:23 · 2692 阅读 · 0 评论 -
GDB里看指针
0x01:毕竟学Linux就要学会gdb调试C语言啦,这里我们来看看指针在内存里到底是长什么样子的,毕竟眼见为实,不多说来调试看看吧;0x02:代码如下所示#include <stdio.h>int main(){ char a = 'c'; char *p = &a; char **ptr = &p; return 0;}gcc -g -o test test.c --> 生成调试文件g原创 2020-12-06 15:39:05 · 1767 阅读 · 0 评论 -
指针地址的强制转换(一)
一切从代码开始叭,先看看这么个例子:struct point{ char string[2]; //2 int *point; //4 int nu[2]; //8 short data[3]; //6}*p;这里假设原创 2020-11-27 14:30:46 · 5636 阅读 · 1 评论 -
当指针遇上数组
先把测试的代码贴上来,这里是在windows平台上进行测试的,虽然很简单,但是还是值得一探究竟;#include <iostream>int main(){ int a[5] = { 1,2,3,4,5 }; printf("the a address is 0x%x\n", a); printf("the &a address is 0x%x\n", &a); printf("the (&a+1) address is 0x%x\n", &a +原创 2020-11-12 17:13:21 · 329 阅读 · 0 评论 -
Cxxxxxxxx
//定义一个字符型数组,用关键字sizeof求长度#include <iostream>int main(){ char a[1000]; int i; printf("hello world\n"); for (i = 0; i < 1000; i++) { a[i] = -1 - i; //printf("%d\n",a[i]); } printf("the size of i %d\n",sizeof(i)); printf("the size原创 2020-11-11 17:52:30 · 58785 阅读 · 0 评论 -
C语言关键字之static
最近打算重新过一过C语言,重新在理解一下;这节我们说说关键字static,最常见的用法那就是修饰变量,变量又分为局部和全局变量,但它们都存在内存的静态区;1.静态全局变量,作用域 仅限于变量被定义的文件中,其他文件即使用 extern 声明也没法使用他。准确地说作用域是从定义之处开始,到文件结尾处结束,在定义之处前面的那些代码行也不能使用它,想要使用就得在前面再加 extern ***。恶心吧?要想不恶心,很简单,直接在文件顶端定义不就得了。2.静态局部变量,在函数体里面定义的,就只能在这个函数里用了原创 2020-11-05 22:31:36 · 1268 阅读 · 0 评论