#include<stdioh>
int f(int s,int t) //一个返回值为int类的指针的函数,参数是两个指针int类指针;
{
if(s<t) s=t; //如果指针t指向地址的值,大于指针s所指向的值;就把指针t指向地址的值赋与指针s所指向地址的值;
return s; //返回指针s的地址;
}
main()
{
int i=3,j=5,p=&i,q=&j,r;
r=f(p,q); //运行后,p所指向i地址的值被修改为5;
printf("%d,%d,%d,%d,%d\n",i,j,p,q,r); //输出都是5;
}
//希望对你有帮助!
C语言指针造成的严重后果举例有:代码无法运行,计算机崩溃无反应等。
比如,你不对指针赋初值,他就会指向一个不确定的地方,万一是关键进程,系统地址什么的,你的机器就自然会崩溃。学习 C 语言的指针既简单又有趣,但是C语言对找工作也是非常有帮助的,C语言也比JAVA实用性好。
C语言指针的特点:
通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。正如所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。
指针占内存少,运行速度快。是因为它本来的性质。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。指针存的是你指向目标的地址,这样就节约了内存了。
你数据可以a[100] 你觉得是数据分配内存大,还是指针指向你的地址分配的内存大呢?用指针直接指向你的地址,就省去了检索的过程,在内存分配时,有时不一定就是顺序的,那么遍历内存的速度肯定没有直接找地址的速度快了。
1什么时候都可以用指针,因为用指针的效率比用变量高。
2当一个函数要返回1个以上的运算结果时,就必须用指针,因为一个函数只能返回一个值,更多的得用指针“带回”。
3 *** 作数组时,用指针不仅方便得多而且代码时效很高。
4 *** 作文件时,不用指针寸步难行。
5利用指针可以简化函数调用的书写过程,使源代码易于阅读。
……不一而论。
主要是为了避免程序崩溃和非法访问数据
防止程序崩溃:在C++中,假设有一个大小为10的数组a,那么最大元素就是a[9],但是如果程序中写到a[10],逻辑上是错误的,实际上程序却可以运行。这是因为在C++中实际上只是取数组a的首地址(也就是a[0]元素所在的存储单元的地址)再加上偏移量(a[10]对应的偏移量就是10个元素占用空间大小,每个元素占用空间大小和数据类型、底层硬件有关),得到所谓的a[10]的一个地址再取这个地址单元中的内容。如果这个单元没有被初始化,那么就是一个随机值,很可能造成程序崩溃的。
安全性:因为通过指针实际可以访问到程序所占用的存储空间之外的内存区域,这样安全性就很有问题了
#include<stdioh>
void main(void)
{
float x[3],p=x;
printf("请输入三个数\n");
for(int i=0;i<3;i++)//键盘接收数据
{ printf("第%d个数:",i+1);
scanf("%f",p++);
}
for(i=0;i<2;i++)//冒泡法排序
{
p=x;
for(int j=0;j<2-i;j++,p++)
if(p>(p+1))
{
float t=p;
p=(p+1);
(p+1)=t;
}
}
printf("这三个数从小到大为\n");
p=x;
for(i=0;i<3;i++)//输出数据
printf("%2f ",p++);
printf("\n");
}
流程图这里不太好画,你根据程序自己画一下吧!
以上就是关于关于C语言指针的问题,求程序运行的结果,要过程。全部的内容,包括:关于C语言指针的问题,求程序运行的结果,要过程。、C语言指针造成的严重后果举例有哪些、C语言,为什说使用指针能使目标程序占内存少,运行速度快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)