⑴ c語言指針定義,float **p;
書上寫的並不是很准確。
首先你需要明白二維數組名和指針的關系
對於這個二維數組,我們舉例為:
1 2 3 4
5 6 7 8
9 10 11 12
因為數組名表示數組的首地址,
<1>所以a表示第一行的首地址
即:a→1 2 3 4
5 6 7 8
9 10 11 12
這時a+1則表示指向第二列的首地址,即
1 2 3 4
a+1→ 5 6 7 8
9 10 11 12
<2>而此時a[0]表示第一行第一列的首地址
a[0]
↓
1 2 3 4
5 6 7 8
9 10 11 12
a[0]+1 表示第一行第二列的首地址
a[0]+1
↓
1 2 3 4
5 6 7 8
9 10 11 12
<3>明白上面的東西你還需要明白**p表示什麼意思
float **p, *j, i=100.12;
j=&i;
p=&j;
如果你把上面三條都明白了你的問題就很容易解答了:
首先 float *p1=a[0]; // 表示第一行第一列的地址
而 float **p2=a; //表示第一行的地址
在這種情況下 *p1相當於a[0][0]
*p2相當於a[0]
*(*p2)相當於a[0][0]
也就是說標準的定義應該是
float *p=a[0]; 或者 float **p=a;
以上是我自己的理解,希望可以幫到你。 局限於對C語言知識的了解,目前認為書上的寫法是錯誤的,但是也許通過進一步學習可能存在那一種定義的方法。知識總是在學習的過程中不斷地擴展和更新的。每一個階段的理解和對錯的判斷不同。如果有了解的朋友也請分享一下。
⑵ 關於C語言指針定義的問題
如樓上所說你對typedef理解還不夠
typedef struct xx
就是定義了一個名為xx的數據類型,如int char一樣
如有 xx *a
xx被儲存在一塊內存區域 *a 就成了一個指向這塊區域的指針變數
⑶ c語言指針類型定義指針變數
LinkList 是Node型指針,Linklist *s 裡面 s是一個數組,數組里存放的是Node型指針,*s是數組第一個元素
⑷ c語言中怎樣定義文件指針
頭文件後面寫一個#define FILE_PATH "D:/T.txt"//引號裡面是指向的文件路徑
⑸ C語言指針的定義
指針就是地址。
你說的是指針變數。
整形變數,浮點變數,字元變數,指針變數。通過起名的規律就知道指針變數是儲存地址的。
指針變數和其他變數的用法一樣,作用域一樣。在一個子涵數中定義指針變數,是局部變數,其他函數是不能用的。
不要把指針變數想的太復雜,地址(指針)也是數據,和其他字元數據,整形數據一樣,沒什麼差異。
當然,全局變數的指針變數當然可以多函數使用。
指針的定義:地址。
指針變數的定義:存儲指針的變數。
⑹ C語言指針基本概念及其指針變數的定義是什麼
在C語言里,指針是一組內存的頭地址,可以存一個數,一個字元,也可以是一個數組.
變數,就是像定義一個整型變數一樣的,定義的是一個指針型變數.
⑺ C語言中,定義指針的問題
問題一是因為,一維數組a[1]代表的是變數,只能用&a[1]取指。而二維數組中a[i]表示的是數組對應行的首地址,所以可以直接賦值給指針。
其實我覺得第二個問題的程序有誤,
char *pp;因該用char **pp;
因為p是指針數組,&p[i]只能賦值給指針的指針。
順便說一下,printf("%s",p)中如果使用%s,表示輸出字元串,所以輸出函數需要字元串的首地址。而*p指的是p指針所指單元的內容,這是一個字元變數,不是合法地址。
⑻ C語言指針問題:在定義指針時*p=a和p=a有區別嗎
當然有區別,區別很大,*p=a,就是給指針的表示的地址賦值,也就是賦值給指針指向的存儲單元;而p=a,則表示給指針賦值,也就是指針的地址變成了a。兩者一個指明了具體值大小,一個指明了具體位置。
⑼ C語言中面指針是什麼定義
三維指針吧```````````
其實無論多少維都差不多
假設int 是4個位元組
例如int arry[3][4];
int (*p)[4]=arry;
然後arry[i]就是那一列數組的首地址
你可以理解為arry[i]是一個常量指針
arry[i]每一個是指向一個4*4=16位元組數組的指針(int是4個位元組);
所以你可以這樣引用arry[2][3]
例如 *(arry[2]+3)
或者 *(*(p+2)+3)
如果是3維指針
int arry[3][4][5];
int (*p)[4][5];
可以這樣得到arry[1][2][3];
*(*(*(arry+1)+2)+3)
或者*(*(*(p+1)+2)+3)
當然如果不報錯的話
還可以int *pa=arry;
*(pa+20+10+3) (前提是你的編譯器不爆錯,反正有些會報錯有些不會)
不懂jia 我昵稱
⑽ C語言函數指針定義
函數指針就是函數的指針。它是一個指針,指向一個函數。看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三個表達式分別是什麼意思? C):這很容易,fun3 是函數名,p1,p2 是參數,其類型為char *型,函數的返回值為char *類型。 B):也很簡單,與C)表達式相比,唯一不同的就是函數的返回值類型為char**,是個二級指針。 A):fun1 是函數名嗎?回憶一下前面講解數組指針時的情形。我們說數組指針這么定義或許更清晰: int (*)[10] p; 再看看A)表達式與這里何其相似!明白了吧。這里fun1 不是什麼函數名,而是一個指針變數,它指向一個函數。這個函數有兩個指針類型的參數,函數的返回值也是一個指針。同樣,我們把這個表達式改寫一下:char * (*)(char * p1,char * p2) fun1;