
c语言
P19777
这个作者很懒,什么都没留下…
展开
-
extern "C" 含义 以及函数声明的重要性
extern “C”extern “C” 的作用是让 C++ 编译器将 extern “C” 声明的代码当作 C 语言代码处理,可以避免 C++ 因符号修饰导致代码不能和C语言库中的符号进行链接的问题。代码如下#ifndef __XXX_H__#define __XXX_H__#ifdef __cplusplus // __cplusplus是C++的预定义宏,表示当前编译环境是C++...原创 2020-01-17 17:13:47 · 1788 阅读 · 1 评论 -
从汇编的角度来看C语言标识符以及对数组名取地址为什么与数组名的值相同
我之前一直有一个疑问,对数组名取地址和数组名的值为什么是一样的。单纯听别人口头讲述这个东西其实我觉得还是有点难以理解,我觉得从汇编的角度来看待这个问题,非常好理解。int main(){ int a = 1; int c[10] = {1,2,3,4,5,6}; return 0;}上面这样的一段简单的代码,我们从汇编的角度来看一些,首先要说明的是,c语言中...原创 2019-10-31 13:22:19 · 986 阅读 · 0 评论 -
数组指针,指针数组,二维数组之间的对比
首先解释几个概念:1.数组指针,即指向数组的指针。其本身是一个指针变量,变量中保存的值是一个数组的起始地址。int (*p)[10];画图画图:这样一种结构,变量中保存的使数组的开始地址。所以,我们就可以像下面这样写int a[10] = {1,2,3,4,5};// 数组名就表示数组的首地址,所以可以直接赋值int (*p)[10] = a;for(int ...原创 2019-10-22 11:24:22 · 532 阅读 · 0 评论 -
C语言数组名与数组指针,你一定不知道的东西!
数组是指针的基础,多数人就是从数组的学习开始指针的旅程的。下面我节选一些在各种论坛和文章和书籍里经常见到的关于数组的文字:“一维数组是一级指针” “二维数组是二级指针” “数组名可以作为指针使用” “数组名就是..........的常量指针” “数组名就是..........的指针常量”我该不该说这些是误人子弟呢?可能是他们自己都没有搞清楚,又或者是他们为了便于初学者的理解。实际...原创 2019-10-13 11:40:19 · 1206 阅读 · 0 评论 -
sizeof与指针步长
开始学c语言的时候早早就接触到了sizeof这个关键字,当时就有一个让我非常困惑的问题,为什么sizeof能够测量出数组的长度,但是用sizeof去测量一个指向数组的指针,却只能得到指针值的长度。就像这样 int a[20]; int *b = a; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(b));结...原创 2019-08-16 11:24:05 · 472 阅读 · 0 评论 -
强制类型转换的原理
在c语言中,强制类型转换可以分为两种类型1.对指针进行强制类型转换int a = 1234567890;float *f = (float *)&a;printf("%f", *f);2.对变量直接进行强制类型转换int a = 1234567890;float f = (float)a;printf("%f", f);这两种转换对于编译器来说有什么区...原创 2019-09-05 09:51:35 · 3336 阅读 · 1 评论 -
原来我一直理解错了memset
之前因为一直使用memset来初始化值为0,所以没有注意到这个问题。直到后来,初始化为一个最大值,才发现memset与我想象的不一样。void *memset(void *s, int ch, size_t n);根据函数我们可以看出来,中间传入的值是一个int类型的值,即要赋值到内存空间的值,size_t是一个字节类型,即代表有多少个字节。这个函数的功能就是将从s指针位置开始,将n...原创 2019-10-08 22:12:37 · 519 阅读 · 0 评论