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/zh-tw/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

發表回復

登錄後才能評論