c语言指向数组的指针,c语言指向数组的指针是什么

本文目录一览:

C语言如何定义指针指向字符型二维数组

使用指针变量访问二维数组的任意一个元素的方法:

1.使用列指针:定义一个列指针p,让它指向二维数组的第0个元素

int a[3][4];

int *p;

p=a[0][0]; 

//因为a[0]是第0行的数组名,所以p=a[0][0]相当于p=a[0],因为a[i][j]前面共有i*4+j个元素

该二维数组的任意i行j列元素可表示为*(p+i*4+j)。

2.使用行指针:定义一个行指针p,让它指向二维数组的第0行

int a[3][4];

int (*p)[4];

p=a;   //也可以为p=a[0]; 

其中* ( *(p+i)+j)表示任意一个i行j列的元素。

扩展资料:

数组的使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组

有关C语言指向指针的指针

我就用自己的理解给你讲一下吧

指针其实就是指向一个变量的变量,具体的说,一个指针它里面保存的是一个变量的地址,而一般的变量保存的是数据,所以指针它的本质也是变量.

指向指针的指针就是一个指针它指向另外一个指针变量,它保存的是另外一个指针的地址,指向指针的指针其实和一般的指针没什么两样,只是它保存的是另一个指针,一般的指针保存的是地址,指向指针的指针访问数据时是间接访问,是通过它保存的指针来进行访问,比一般的指针多了一个中间量,它可以进行**P的运算,而一般的指针的运算为*p,

不知道我的表达能力如何???

如有不懂,请给我发消息

C语言编程指向结构体数组的指针

下面的程序是我以前写的,你稍微改改就能符合你的要求了

#include stdio.h

#include malloc.h

typedef struct st

{

    char name[20];

    int chinese;

    int math;

    int english;

    float average;

}student;

void swap(student *a, student *b)

{

    student temp = *a;

    *a = *b;

    *b = temp;

}

void sort(student *array, int n)

{

    int i, j, flag;

    for (i = 0; i  n – 1; i++)

    {

        flag = 1;

        for (j = 0; j  n – i – 1; j++)

        {

            if (array[j].average  array[j + 1].average)

            {

                swap(array + j, array + j + 1);

                flag = 0;

            }

        }

        if (flag)

            break;

    }

}

void print(student *array, int n)

{

    int i;

    printf(“姓名\t语文\t数学\t英语\t平均成绩\n”);

    for (i = 0; i  n; i++)

    {

        printf(“%s\t%d\t%d\t%d\t%f\n”, array[i].name, array[i].chinese,

            array[i].math, array[i].english, array[i].average);

    }

}

int main()

{

    int number = 9;

    int i;

    student *stu = (student *)malloc(sizeof(student) * 9);

    for (i = 0; i  number; i++)

    {

        printf(“请输入第%d个学生的姓名及成绩(姓名 语文 数学 英语成绩以空格隔开):\n”, i + 1);

        scanf(“%s %d %d %d”, (*(stu + i)).name, (*(stu + i)).chinese, 

            (*(stu + i)).math, (*(stu + i)).english);

        (*(stu + i)).average = ((*(stu + i)).chinese + 

            (*(stu + i)).math + (*(stu + i)).english) / (float)3.0;

    }

    print(stu, number);

    sort(stu, number);

    print(stu, number);

    free(stu);

    return 0;

}

C语言 指向二维数组的指针

a是指针,不过是行指针,p的基类型int,而 a 的基类型是一个包含4个整形元素的一类数组.

int (*p)[4] = a;这样定义p也会编译过去的,因为这时p的基类型也是一个包含4个整形元素的一类数组。

至于int* p = a[0];编译正确,是因为a[0]也是指针,基类型也是int。

C语言中 数组指针的意义

你说的是指向数组的指针如int(*)[]?

指向数组的指针有一种非常常见的用法,就是令其指向二维数组的某一行。如二维数组a[3][4],它的本质是一维数组的数组,即a本质上是一个3个元素的数组,其中的每个元素都是一个int[4]数组。要想使用一个指针p指向其中的某个元素,就必须将p定义为数组指针int (*p)[4],它指向一个int[4]数组。然后,才可以令p指向a:p=a。

C语言指向二维数组的指针

一、你的 float score 数组定义的是:一个3行、4列的二维浮点数组,数组的元素为浮点数。如果你换个格式书写就清晰了!

float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};

在调用的过程中,score 就是这个数组的首地址,指向的是浮点数组{65,67,70,60,}。score + 1 指向的是数组{80,87,90,81,}。

二、你的 float *p 定义的是:一个指向浮点数的指针。这个是一维的。

在调用的过程中,float 指向的是 xx。一个浮点数字。

两个的定义不同,所以参数传递过程中会出错。

三、你的 float (*p)[4] 定义的是:一个指向含有四个元素的浮点数组的指针。

在调用的过程中,float 指向的是{xxx,xx,xx,xx,},由四个浮点数组成的数组。

这时两个定义相同,所以参数传递过程中没有错误。

四、有个建议,你的程序书写格式不清晰,不利于你纠错和修改,应该尽量的清晰、明确,不建议使用简化方式定义参数。

作为一个软件工作者,应该尽量使程序流畅、格式清晰、易读,这是一个软件工作者最基本的职业素养。

格式化后,程序如下,会清晰很多:

#includestdio.h

void main()

{

void search (float (*p)[4],int n);/*这里的 float *p 好像有问题*/

float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};

search(score,2);

}

void search(float (*p)[4],int n)/*这里的 float *p 好像有问题*/

{

int i;

printf(“the score of No.%d are:\n”,n);

for(i=0;i4;i++)

{

printf(“%5.2f”,*(*(p+n)+i));

}

printf(“\n”);

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/289027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相关推荐

  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • 指针Python:为什么Python中不需要使用指针?

    在Python中,指针的使用不像其他语言一样那么常见。这是因为Python有自己的内存管理方式,所以在大多数情况下,不需要显式地使用指针。那么,为什么Python中不需要使用指针呢…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29

发表回复

登录后才能评论