首页 > 其他分享 >C 指针1

C 指针1

时间:2024-01-29 15:22:18浏览次数:16  
标签:函数 int void increment printf 指针

phello.c

#include <stdio.h>

void increment(int* p); // 提前声明increment函数

int main(void){
    printf("index -----------start \n");
    int b = 0; // 初始化b的值
    increment(&b); // 传递b的地址给increment函数
    printf("b 1 is  %i \n",b); // 打印b的值
    increment(&b); // 传递b的地址给increment函数
    printf("b 2 is  %i \n",b); // 打印b的值
    return 0;
}

//这段代码定义了一个名为increment的函数,该函数接受一个指向整数的指针作为参数。
//在函数内部,它将指针所指向的整数的值加一。换句话说,这个函数的作用是将传入的整数值增加1。
void increment(int* p){
    *p = *p + 1;
}
/*这种写法的意义在于可以通过传递指针来修改函数外部的变量的值。如果直接传入变量并加1,那么函数内部对变量的修改不会影响到函数外部的变量。
通过传递指针,函数可以直接修改指针所指向的变量的值,从而实现对函数外部变量的修改。这种方式可以用于在函数内部修改外部变量的值,
而不需要返回值来传递修改后的结果。*/
运行结果:
index -----------start b 1 is 1 b 2 is 2

 

phello2.c

#include <stdio.h>

void increment2(int p); // 提前声明increment函数

int main(void){
    printf("index -----------start \n");
    int b = 0; // 初始化b的值
    increment2(b); // 传递b的值给increment函数
    printf("b 1 is  %i \n",b); // 打印b的值
    increment2(b); // 传递b的值给increment函数
    printf("b 2 is  %i \n",b); // 打印b的值
    return 0;
}

void increment2(int p){
   p=p+1;
}
运行结果:
index -----------start b 1 is 0 b 2 is 0

 

标签:函数,int,void,increment,printf,指针
From: https://www.cnblogs.com/shaozhiqi/p/17994607

相关文章

  • C 数组形参会退化成指针
    数组形参会退化成指针,指向数组的第一个元素。#include<stdio.h>voidShowBooksName(char*names[],intlen){for(inti=0;i<len;++i){puts(names[i]);}}voidTestSizeOf(char*books[]){//数组形参退回成指针,指向数组中的第一个元素......
  • 双指针
    似乎比较useless,暂时就浅尝辄止概述找到答案的单调性,把原来多重循环嵌套\(O(n^2)\)的枚举优化成双指针维护的\(O(n)\)枚举。//暴力for(inti=0;i<n;i++)for(intj=0;j<n;j++){ todo;}//双指针for(inti=0;j=0;i<n;i++){ whi......
  • C++类指针未初始化导致访问成员变量时报段错误
    #安装gcc和g++yuminstallgccyuminstallgcc-c++.x86_64//a.cpp#include<iostream>#include<unistd.h>usingnamespacestd;classTest{public:  voidtest1(){  }  voidtest2(){    age=10;  }private:  intage;}......
  • (坚持每天写算法)算法复习与学习part1基础算法part1-12——双指针算法
    双指针是一种思路,很多题都可能用得到,这里我就只选取Acwing网站的三道题(事实上我最近就是在这里刷题,leetcode反而不怎么去了,刷完这个网站的我就会去leetcode刷了)双指针一般来讲会在数组有序的情况下应用,但是如果是无序的也是有可能的,两个指针会遍历整个数组(如果条件允许的......
  • Spring中没有注入而是new导致空指针异常
    背景:在BeforeSave_2250042中调用了一个公共模块CommonVerifyHandler的verifySeal()方法,但是运行时显示空指针异常空指针异常:CommonVerifyHandler类:@ComponentpublicclassCommonVerifyHandler{@AutowiredpublicCommonVerifyHandlerMappercommonVerifyHandler......
  • Leetcode刷题第四天-双指针-二分法
    15:三个数之和链接:15.三数之和-力扣(LeetCode)em...双冲for循环,从头去遍历,0-(a+b)是否在列表中,最终timeout数组从小到大排序,设置三个指针,i从头遍历到lens-1,j从i+1开始,k从lens-1开始,sums==0,放入结果,大于0,k-1,小于0,j+1如果i和i+1比较,相同跳过的话,会丢结果,i和i-1相等跳过,因为i-1已......
  • ARM指针寄存器——堆栈指针寄存器SP、程序计数器PC、连接寄存器LR详解
    堆栈的实现方法        在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为‘压栈’(push)。通常用一个指针(堆栈指针SP—StackPointer)实现做一次调整,SP总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆......
  • 无涯教程-Rust - 智能指针
    Rust默认情况下在堆栈上分配所有内容,您可以通过将它们包装在智能指针(如Box)中来将它们存储在堆上,智能指针实现下表中列出的特征-Sr.NoTraitnamePackage&描述1Derefstd::ops::Deref用于不可变的取消引用操作,如*v。2Dropstd::ops::Drop当值超出范围时用于......
  • C语言和C++中的空指针区别
    C语言中,空指针是NULL,是一个宏在C++中NULL似乎也可以用,但是C++中的NULL其实是有问题的。C++大佬在设计的时候可能没有考虑全面在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使......
  • java中双指针算法(快指针与慢指针)
    双指针法:设置两个指针,分别是快指针和慢指针,分别是i和j。  设置一个变量temp用来储存第一个数据nums[0] 过程:1.nums[0]  temp  他们两个相等  那么temp不需要改变,i=i+1,j变,i=1,j=1   2.nums[i=1],temp  他们两个相等,temp不变,i=i+1,j不......