指针是c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针。
总结:
指针就是地址。
可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到变量中,这个变量就是指针变量。
#include<stdio.h>
int main()
{
//在内存中开辟一片空间
int a = 10;
//用p来接收a的地址
int* p = &a;
*p = 20;
printf("%d", a);
return 0;
}
计算指针变量的大小:
#include <stdio.h>
int main()
{
int a = 10;
int* p = &a;
//计算指针的大小
printf("%d", sizeof(p));
return 0;
}
总结:
type +*
比如定义一个int类型的指针
int * a;
一下是我列举的一些指针的类型
int* p = NULL;
char* pa = NULL;
short* pb = NULL;
long* pc = NULL;
float* pd = NULL;
double* pe = NULL;
不同类型的指针是为了存放不同的类型的变量的地址。
#include <stdio.h>
//演示实例
int main()
{
int n = 10;
char *pc = (char*)&n;
int *pi = &n;
printf("%p\n", &n);
printf("%p\n", pc);
printf("%p\n", pc+1);
printf("%p\n", pi);
printf("%p\n", pi+1);
return 0;
}
pc+1可以看出向后走了1个字节位,pi+1向后走了4个字节位。这些向后走的距离都和指针是什么类型有关
总结:
指针的类型决定了指针向前或者向后走一步有多大(距离)。
野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。
代码:
#include<stdio.h>
int main()
{
int* p;
*p = 10;//指针没有初始化,导致程序出了问题
return 0;
}
这里编译器直接就给我们报出了错误的原因,局部变量没有初始化,这就是野指针的情况之一,没有初始化指针。
代码如下:
#include<stdio.h>
int main()
{
int arr[10] = {
1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int* p = arr;
for (int i = 0; i <= sz; i++)
{
printf("%d ", *(p + i));
}
return 0;
}
当i=sz时,就超出了arr数组,就变成了野指针,也就是打印的数字不可控。
代码如下:
int* t()
{
int a = 10;
return &a;
}
int main()
{
int* p = t();
*p = 20;
return 0;
}
变量a的地址只在t()函数内有效,当把a的地址传给指针p时,因为出了t函数,变量a的空间地址释放,导致p变成了野指针。
#include <stdio.h>
//演示实例
int main()
{
int n = 10;
char *pc = (char*)&n;
int *pi = &n;
printf("%p\n", &n);
printf("%p\n", pc);
printf("%p\n", pc+1);
printf("%p\n", pi);
printf("%p\n", pi+1);
return 0;
}
代码:
#include<stdio.h>
int main()
{
int arr[5] = {
1,2,3,4,5 };
printf("%d ", &arr[5] - &arr[0]);//得到的是中间的元素个数
return 0;
}
文章浏览阅读566次。用Servlet+jsp+mysql写项目时,使用C3p0连接池连接数据库,启动服务出现以下错误:mysql APPARENT DEADLOCK!!!控制台出现的异常如下:com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@536b0935 – APPARENT DEADLOCK!!! Complete Stat..._mysql apparent deadlock
文章浏览阅读882次,点赞8次,收藏23次。24变化较大的是选择题,出现了很多冷门知识点。当然,考试不是一成不变的。时间长了,考试的形式、内容都会变。光靠过去的题目,有可能漏掉新题型,到时候就傻眼了。考研408大题虽然整体来看难度和往年相识,但是每年还是会出一些新考点,例如今年的计网BGP,所以最重要的还是掌握知识点。再说了,考试可不只是考你知识储备,更考的是综合能力和解题方法。这些东西可不是光靠做题就能练出来的,得花点心思,多想想,多琢磨琢磨。光凭做真题,你可别指望能应付得了所有情况。总的来说,真题固然重要,但可不能当成唯一标准。_408大题怎么准备
文章浏览阅读375次。命令一次只能操作一个文件或者目录,如果现在我有好几个文件甚至好几百个文件需要处理,是不是就不能用。(这里只有 9 个文件,想一个一个修改也不是不可以。稍微修改一下上面的指令,使输出的文件名转换成指定的格式,即把文件名中的。命令,允许用户创建一个遍历一系列值的循环,以此来重复执行一系列命令。参数不是必须的,完全可以省略,只是为了跟直观地看一下修改的过程而已。编辑器可以根据命令来处理数据流中的数据,这正是我们所需要的。先看测试目录下的文件,这里有 9 个。的文件,需要把他们的文件名都改成。_mv批量修改文件名
文章浏览阅读469次。题意K种不同颜色的N个球,要求每种颜色最后一个球的位置必须按照顺序来。求有多少种排列方法。题解排列规则比较简单,首先放最后一个球,这个球一定放在最后一个空位,放完最后一个球之后,其他的a[i]-1个球随便放。按照排列规则计算一下即可。这里用到了一个小技巧,组合数打表。感觉还是挺实用的。代码#include #include#include#_codeforces 554c a题
文章浏览阅读6.2k次,点赞8次,收藏44次。目录第1关:用指针法输入12个整数,然后按每行4个代码示例第2关:指针变量作为函数参数实现两变量交换值代码示例第3关:报数代码示例第4关:strcmp函数代码示例第1关:用指针法输入12个整数,然后按每行4个任务描述题目描述:用指针法输入12个整数,然后按每行4个数输出####相关知识(略)####编程要求请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。输入输入包含一行,有12个整数。输出按顺序,每行输出4个整数。####测试说明样例输入:1 2 3 4 _第1关:用指针法输入12个整数,然后按每行4个数输出
文章浏览阅读1k次。数据库执行变更遇到发布错误的文件时,客户现场存在着这样一种操作方式:用户将平台下发到客户端的sql文件通过在客户端更改文件内容的方式,来解决发布时遇到错误的问题,这种方式本质上造成了计划发布与实际发布对象的偏离,对于用户后续回溯问题,造成不易察觉的隐藏问题。,非强制,若部分用户在使用数据库变更时,无该使用问题,可以通过不配置该模型实例,正常发布即可。相较于现有的方案,可以有效的提升单位面积内所呈现的信息量,并且由于3D多了一个维度展示的空间,数据中拉开了视觉层级,避免了因数据体量增大,带来的视觉干扰。_3d多层拓扑图
文章浏览阅读1.7k次。这一部分我们通过一个简单的例子介绍如何使用metamethods。假定我们使用table来描述结合,使用函数来描述集合的并操作,交集操作,like操作。我们在一个表内定义这些函数,然后使用构造函数创建一个集合:Set = {}function Set.new (t) local set = {} for _, l in ipairs(t) do set[l] = true end return setend function Set.union (a,b) .._bad argument #1 to 'pairs
文章浏览阅读836次。ar识别示例库代码片段_微信小程序识别物品弹出ar动画
文章浏览阅读321次,点赞4次,收藏3次。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
文章浏览阅读1k次。首先使用a拷贝构造了形参aa,然后aa拷贝构造了copy1,copy1拷贝构造了copy2(注意这里虽然是等号也是拷贝构造,因为这里的copy2还是对象创建初始化阶段,只有对象创建出来之后再给对象赋值才是赋值)copy2拷贝构造了一个临时对象然后传参给test,使用这个临时对象1拷贝构造了aa然后aa重复上面再函数中的拷贝构造,返回值,因为是值返回所以先再main函数的栈帧内开辟一个临时对象2,调用了一次拷贝构造,然后再用哦这个临时对象2,拷贝构造了ret对象。所以编译器进行了优化,那么优化的地方在哪呢?._c++编译器优化
文章浏览阅读328次。1-可以交流、咨询、答疑。_rbf神经网络整定的pid控制器设计
文章浏览阅读74次。场景描述:公司现有一批windowsxp的计算机需要升级到windows7专业版。C盘有很多用户数据,这批计算机也很多,不可能手动一台一台的去备份,我们希望SCCM能自动将用户数据进行备份和还原。SCCM能自动备份和恢复数据,对于管理员来说,可谓一大福音,和以前手动拷贝数据说再见吧。对于以上案例,我们会用到SCCM用户状态迁移角色。步骤:1 在SCCM服务器上添加“用户状态迁移角色” ..._usmt 0x00004005