想梳理一下指针

(1)运用函数求a,b的最大值并按大到小的顺序输出

int MAX(int a,int b,int *p,int *q)

{

p=&a;//要在主函数中写,原因不清楚。。。反正在这里写答案就说错的,改到主函数就对了,而且只能定义一处主函数或调用函数

q=&b;

if(a<b)

{

int c=a;//反正*p就是a,这不是标准的但是是对的

*p=b;

*q=c;

}

return a;

}

#include <stdio.h>

int main()

{

int MAX(int a,int b,int *p,int *q)

int a,b;

int *P,*q;//应该是int *p=a,*q=b;

max(a,b,p,q);

scanf("%d%d",&a,&d);

printf("%d\n",a);

printf("%d %d",a,b);

return 0;

}

错误代码,改正://

注意:定义时时*p,调用的时候用p;

int *p=&a==int *p; p=&q;

改良版:

如果改成全局变量:

貌似我吧调用函数放在前面就不行了,还有全局变量最好首字母大写;

突然想起了#define IP 3.14

(2)指针和一维数组

1.a[5]输出

#include <stdio.h>

int main ()

{

int a[5]={0,1,2,3,4};

int *p=a;//注意和前面的区别 int *p=&a;是定义指针p,p为地址,地址就是&a;但真正应该是int *p;int p=&a;但是这里,a代表了a[5]的首地址

for(;p<a+5;p++)

printf("%d",*p);

}

想要输入加输出

不知道怎么不对,呜呜呜

我回来改错了

要注意指针变量的当前值前面一个已经加到了a+5

改了以下,这样是正确的

貌似也只见到了这个种

典型错误

a是常数不能++;p是变量

改良

p++;*p  == *p++ ==*(p++)==a[i++]*和++是同优先级,从右向左,算了,以后分不清顺序,就用括号

不早了,明天写

时间: 2024-12-29 23:43:57

想梳理一下指针的相关文章

指针知识梳理7- 函数指针

一.函数的地址 前面讲 程序运行起来以后,在内存中有代码区,程序运行每一条指令,是从内存中读出来这条指令,然后再运行. 所谓函数的地址是指函数的入口地址,这个函数的从这个地址開始进入运行,也就是从这个地址处取指令运行. 那么在代码层面,函数的地址用 函数指针变量 来存储. 二.基本使用 1.函数指针定义 函数指针的定义,在语法看起来略微有点怪,仅仅须要记住形式 返回值 (*指针变量名)(形參类型): 比方,下面4个函数 void func1(void) { } int func2(void) {

梳理caffe代码common(八)

因为想梳理data_layer的过程.整理一半发现有几个很重要的头文件就是题目列出的这几个: 追本溯源,先从根基開始学起.这里面都是些什么鬼呢? common类 命名空间的使用:google.cv.caffe{boost.std}. 然后在项目中就能够任意使用google.opencv.c++的标准库.以及c++高级库boost. caffe採用单例模式封装boost的智能指针(caffe的灵魂).std一些标准的使用方法.重要的初始化内容(随机数生成器的内容以及google的gflags和gl

值传递,指针传递;引用传递(c++独有)本质

要理解值传递.指针传递和引用传递的区别,主要要理解函数的实参和形参,函数的作用域(自动变量.栈),内存的布局以及指针和引用的特点.这里主要总结三种参数传递方式使用的主要场合. 值传递:只给函数提供输入值,需要复制开销,大对象很少使用值传递. 指针传递:可以改变指针指向内容的值,但是不能改变指针本身,无需复制开销.如果需要改变指针本身,可以使用二重指针或者指针引用. 引用传递:除了提供输入值外,还返回操作结果,无需复制开销. #include<stdlib.h> //值传递,函数体内变量n是参数

Java的Reference感觉很象C++的指针,但是区别是本质的

他们相同之处在于都是含有一个地址,但是在Java中你无法对这个地址进行任何数学运算,并且这个地址你不知道,是Java Runtime分配给你的,它随时还要调整这个地址(After GC,Memory要Compact,这时候一个Object Reference的地址就会改变). 而C/C++之中,你可以对指针变量进行各种操作.譬如下面这个小例子 #include <iostream.h>int main (){int numbers[5];int * p;p = numbers; *p = 10

C++11中的指针空值nullptr

时间:2014.05.07 地点:基地 ----------------------------------------------------------------------------- 一.为什么要有指针空值nullptr 在良好的编码习惯中,声明一个指针并对其进行初始化非常重要,未初始化的悬挂指针常导致一些难以调试的错误.往常,我们常这样初始化指针变量: int* my_ptr1=0; int* my_ptr2=NULL; 但我们知道,NULL其实是一个宏定义,字面常量为0,即上述两

C 真正理解二级指针

本文转载自CSDN博主liaoxinmeng,做数据结构时遇到指针方面的问题,想了许久,因此我觉得很有必要复习一下二级指针及其使用 正文如下: 指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的"值,结果传递"等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... p *p **p                                      --- --- -

第5课 C语言指针深入1

1.客户端两种主流的接口模型: #ifndef _SOCKETCLINET_H #endif _SOCKETCLINET_H #ifdef __cplusplus //如果用了C++的编译器,用C语言的规范来引用 extern "C" { #endif //socket客户端环境初始化 int socketclient_init(void** handle); //socket客户端报文发送 int socketclient_send(void* handle, unsigned ch

单片机教程.指针的基础与1602液晶的初步认识

指针的基础与1602液晶的初步认识 我们在上C语言课的时候,学到指针,每一位教C语言的老师都会告诉我们一句:指针是C语言的灵魂.由此可见,指针是否学会是判断一个人是否真正学会C语言的重要指标之一,但是很多同学只知道其重要性,却没学会其灵活性. 简单的程序,100来行代码,不需要指针我们可以轻松搞定,但是当代码写到几千上万行甚至更多的时候,利用指针就可以直接而快速的处理内存中的各种数据结构中的数据,特别是数组.字符串和内存的动态分配等,它为函数之间各类数据传递提供了简洁便利的方法.说了这么多作用估

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended