2.指针

夜行过客 夜行过客     2022-08-29     382

关键词:

一.指针是一种数据类型

1) 指针也是一种变量(从内存的角度看,就是分配四个字节的内存),占有内存空间,用来保存内存地址。

2) 指针变量和它指向的内存块是两个不同的概念。

例:拷贝字符串

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#pragma warning(disable:4996)


void main() {



    char buf1[100] = {0};
    char buf2[100] = {0};

    char *p1 = &buf1;
    char *p2 = &buf2;

    strcpy(buf1,"abcdef");

    while (*p1 != '\0')
    {
        *p2 = *p1;
        p1++;
        p2++;
    }

    *p2 = *p1;
    printf("current buf1 is : %s\n",buf1);
    printf("current buf2 is : %s\n",buf2);

    system("pause");


}

运行示意图:

运行结果:

3) 指针是一种数据类型,是指它指向的内存空间的数据类型

这就是为什么int类型的指针p,和char类型的指针p,在进行p+1操作后,其步长不一致的根本原因。所以,指针的步长,是根据其所指的内存空间类型来定。

二.可以通过*p/*p++来改变变量的值是指针存在的最大意义

在实际应用时,就是用实参取地址,传给形参,在被调用函数里面用*p来改变实参,再把运算结果传出来。

三.函数指针

#include <stdio.h>
#include <stdlib.h>

void MyFun(int x);
// 定义一个函数指针
void (*pMyFun)(int);

int main(void)
{
    MyFun(10);
    pMyFun = &MyFun;
    (*pMyFun)(20);

    system("pause");
    return 0;
}

void MyFun(int x)
{
    printf("%d\n",x);
}

 

详解c语言指针(代码片段)

文章目录1.字符指针2.指针数组3.数组指针3.1数组指针的定义3.2&数组名和数组名的区别3.3数组指针的使用4.数组参数,指针参数4.1一维数组传参4.2二维数组传参4.3一级指针传参4.4二级指针传参5.函数指针6.函数指针数组7.指向... 查看详情

c++入门基础教程:c语言的指针与结构体到底怎么用?(代码片段)

目录一、前言二、指针2.1指针与地址2.2指针与函数参数2.3指针与数组2.3.1指针与一维数组2.3.2 指针与二维数组2.4 字符指针与函数2.5 指针数组以及指向指针的指针2.5.1指针数组2.5.2指向指针的指针2.6 指向函数的指针三、结构体3.... 查看详情

06指针.(代码片段)

目录1.本章重点2.什么是指针2.指针和指针类型3.野指针3.1野指针的成因3.1.1指针未初始化3.1.2指针越界访问3.1.3指针指向的空间释放3.3.4如何规避野指针4.指针运算4.1指针+-运算4.2指针-指针4.3指针的关系运算4.4指针的解引用操作5.... 查看详情

c语言二维数组指针变量是啥,int(*p)[2]啥意思

二维数组指针变量形式如下:类型名(*数组名)[数组行数][数组列数]如:int(*p)[2][3];//定义一个int类型的二维数组指针变量,数组中每个元素都是一个指针int(*p)[2]表示定义一个数组指针,只是是一个一维的数组指针,数组中每个元... 查看详情

实验12——指针的基础应用2

1本次课学习到的知识点:(1)指针变量名是一个标识符,要按照c标识符的命名规则对指针变量进行命名。(2)指针变量的数据类型是它所指向的变量的类型,一般情况下一旦指针变量的类型被确定后,它只能指向同种类型的... 查看详情

c语言进阶玩转指针——指针的高阶玩法!(代码片段)

文章目录前言一、字符指针二、指针数组和数组指针1.指针数组2.数组指针2.1.数组指针是什么?2.2.&数组名和数组名的区别2.3.数组指针的使用三、数组参数与指针参数1.一维数组参数2.二维数组参数3.一级指针传参4.二级指... 查看详情

指针细节整理2

/*指针的细节汇总2017年12月15日14:59:34*/#include<stdio.h>intmain(void){inta[10]={1,2,3,4,5,6};intb[20]={1,2,3,4,5,6,7,8};int*p=a;//指针变量指向a的地址。int*q1=&b[5];//指针变量指向b[5]的地址。int*q2=&b[3];//printf("-- 查看详情

指针-2

1.指针的重要性:  表示一些复杂的数据结构(学数据结构必须学指针)  快速的传递数据  使函数返回一个以上的值  能后方便的处理字符串  是理解面向对象语言中的基础(java)总结:指针是c语言的灵魂2.指针的... 查看详情

c初阶--指针初阶(上):什么是指针+指针类型+野指针(代码片段)

目录☀️1.指针是什么? 2.指针和指针类型🏠 1.指针类型决定了,在解引用指针的时候能访问几个字节(有多大的权限)2.指针类型决定了,指针进行+1、-1的时候,一步走多远(步长)3.指针类型的意义用处在... 查看详情

c语言指针浅谈(代码片段)

...福利点击直接开始正文:点我跳过目录文章目录C语言指针浅谈1.普通指针1.1指针的定义1.2指针实例理解1.3头脑风暴1.4头脑风暴(二)1.5二级指针1.7指针常量1.8常量指针2.数组指针/指针数组2.1数组的理解2.2数组强制类型... 查看详情

c语言指针浅谈(代码片段)

...福利点击直接开始正文:点我跳过目录文章目录C语言指针浅谈1.普通指针1.1指针的定义1.2指针实例理解1.3头脑风暴1.4头脑风暴(二)1.5二级指针1.7指针常量1.8常量指针2.数组指针/指针数组2.1数组的理解2.2数组强制类型... 查看详情

c指针——指向指针的指针(程序讲解)

4-1.c多维数组的定义#include<stdio.h>intmain(void)inti,j;intdata[2][3]=1,2,3,4,5,6;//定义二维数组data,2行3列;并对其进行初始化printf("data[2][3]:");for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",data[i][j] 查看详情

实验12——指针的基础应用2

...双引号括起来的字符序列,是一个指向该字符串首字符的指针常量;(2)不要引用未赋值的指针,字符指针需要先赋值,后引用,否则指针的值是不确定的,可在定义指针时,将它的初始值为空;(3)字符值‘ 查看详情

c语言--指针2

9.多维数组与指针 (1)数组名可以看做是指向第0个元素类型的指针常量,并且在数值上为第0个 个元素的地址。数组名a,if把a当做指针a=>&a[0](2)C语言中所有的数组都是一维数组。 假如有:inta[3][4];=>int[4]a[3]a[0]____a[1... 查看详情

2.指针

1.指针也是一种变量(从内存的角度看,就是分配四个字节的内存),占有内存空间,用来保存内存地址。2.指针变量和它指向的内存块是两个不同的概念。例:拷贝字符串#include<stdlib.h>#include<string.h>#include<stdio.h>#pragma... 查看详情

指针2007三2双语版

  查看详情

函数指针和指针函数和回调函数以及函数指针数组

1.首先来说,函数指针就是函数的指针2.指针函数,就是指针的函数。也就是返回值是个指针一、指针【1】指针 1---指针变量:用于存放地址量的变量 2---地址常量  inta=20;  int*p=&a;【2】运算符 1---&a... 查看详情

pointer(指针)-重置版(代码片段)

文章目录指针指针大小实例指针类型指针类型的意义1实例1实例2指针类型的意义2实例1实例2指针类型的意义3实例1野指针形成野指针的原因1.指针未初始化2.指针越界访问3.当一个指针指向的空间被释放了,或者指针指向的空间被释... 查看详情