c語言二維指針
① c語言中如何用指針運算符來表示一個二維數組的元素及地址
二維指針,就是說第一維是指針,第二維還是指針;
拿*(*(a+i)+j)來說:a是數組的首地址吧,然後+i,就是說a地址向後偏移i位。就是a+i的地址了,注意,這里a+i只是地址,用*符號取出該地址的數據,就是*(a+i),這里*(a+i)就是第一維指針,它指的是地址,不是數據。
而且後面的*(a+i)+j就是說以*(a+i)為首地址,偏移j位,然後使用*取內容,這里就是第二維了,取到的數據就是實際數據了
② c語言二維字元串指針 怎麼使用
char *p="google"; char s[20]; strcpy(s,p);//字元指針char*和字元數組的復制都是通過strcpy來的,數組也可以用for語句。 vc中有專門處理字元串的標准C++類,string.只要聲明兩個變數就可以實現簡單的操作了。 string a,b="google",c;//c串可以直接轉化為string a=b;//復制 c語言是strcpy(a,b);A所在的空間一定要大於b的長度。 c=a+b;//連接 strcat(a,b); a==b?1:0 ;//比較 strcmp(a,b); reverse(a.begin(),a.end());//倒置串 strrev(a);
③ C語言二維數組指針變數是什麼,int (*p)[2]什麼意思
二維數組指針變數形式如下:
類型名
(*數組名)[數組行數][數組列數]
如:int
(*p)[2][3];
//
定義一個int類型的二維數組指針變數,數組中每個元素都是一個指針
int
(*p)[2]表示定義一個數組指針,只是是一個一維的數組指針,數組中每個元素(共2個元素)都是一個int類型的指針變數,指針指向的地址就需要後續程序給出,不然會變為野指針。
④ C語言二維數組指針變數是什麼int (*p)[2]什麼意思
c語言比較靈活,C語言的指針更加靈活多變,int (*p)[2]是一個整型的指針型一維數組,表示兩個元素,具體如下,
數組指針變數形式如下:
類型名 (*數組名)[數組行數][數組列數]
int (*p)[2]表示定義一個數組指針,指針指向的地址就需要後續程序給出,不然會變為野指針。
⑤ C語言中怎樣區分一維指針和二維指針
指針就是指針沒有維數。
指針指向的數據可以有維數,不知樓主是否問的這個意思?
比如有多維數組,就可以有多維數組的指針。
例子:
int
(*ptr)[3][3];
int
(*ptr1)[3];
則定義了兩個指針,ptr指向一個[3][3]二維int型數組,ptr1指向一個int型一維數組。
⑥ C語言關於二維數組指針表示方法
雖然說「首地址
=
array[0]=&array[0][0]」,這只代表他們的值相同,意義不同的。
array是二維指針變數,array[0]是一維指針變數,&array[0][0]是變數的地址。
*array
表示二維指針前加*
等於一維指針array[0],值還是以前的值,但是意義不同。
⑦ 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,},由四個浮點數組成的數組。
這時兩個定義相同,所以參數傳遞過程中沒有錯誤。
四、有個建議,你的程序書寫格式不清晰,不利於你糾錯和修改,應該盡量的清晰、明確,不建議使用簡化方式定義參數。
作為一個軟體工作者,應該盡量使程序流暢、格式清晰、易讀,這是一個軟體工作者最基本的職業素養。
格式化後,程序如下,會清晰很多:
#include<stdio.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;i<4;i++)
{
printf("%5.2f",*(*(p+n)+i));
}
printf("\n");
}
⑧ c語言二維數組的指針
先用一個指針類型把這個返回值進行接受,然後再向你的那個二維數組賦值,記得要把那個指針free掉
char*
temp;
temp
=
returnPointer();
strcpy(a[i],
temp);
free(temp):
⑨ c語言 二級指針
第一條改成
int
a[10][20],*p=a[0];
二維數組本來就是以為數組,二級指針是指針的指針,不同概念
char
*a[]={"a","b"};
char
**p=a;
這里定義了一個指針數組,裡面保存了兩個地址,一個是字元串a的首地址,一個是字元串b的首地址,然後數組的首地址a,這樣用一個二級指針才能訪問,這就是所謂的指針的指針
int
a[2][2]={1,2,3,4};
int
(*p)[2]=a;
(*p)[2]的意思是,p是一個指針變數,只想一個有兩個元素的一位數組,這不剛剛就是二維數組的首地址嗎?所以這個(*p)[2]是可以指向二維數組首地址
*p[2]的意思是,定義一個數組,裡面有兩個指針元素,這和"[]","*"運算符優先順序有關的
⑩ 如何在c語言二維數組中使用指針
程序中有些問題:
1、函數的定義有錯誤(參數格式不對);
2、程序中沒有調用函數(或者說是調用格式有誤)
3、函數中的處理邏輯需要修改(一步一步來,這樣容易處理和理解)。
你定義的函數是使用數組作為參數的,數組名本身就是個地址(相當於指針)。
下面在手機上用易歷知食軟體里的微C程序設計來演示修正後的代碼並運行程序,供參考。
手機上修正後的代碼如下圖:
手機上運行的效果如下圖所示: