本文目錄一覽:
- 1、關於c語言指針應用的一些疑問?
- 2、c語言指針的疑問
- 3、C語言指針問題
- 4、關於c語言中指針的小疑惑!
- 5、關於C語言指針的一個疑問?
- 6、關於C語言指針定義的問題
關於c語言指針應用的一些疑問?
1: 只是類型變化,其值是不變的。
2,3.1:沒問題
3.2:沒啥技巧,這個就是一個記憶過程,把課本上關於運算符結合順序和優先順序的內容多看看
3.3:當然不是,這只是取這個指針指向的數組的下標為act_e-header.s.d_size的元素而已
4:這是地址比大小。如果地址在同一個數組中當然有意義,數組中的元素總是按順序排的,地址小的下標也小
c語言指針的疑問
你是自學還是老師教到這裡了?
你要改變傳遞參數的值, 就要傳入該參數變數的地址, 哪怕它本身就是一個指針變數
//或者把主函數中的p,q變數當作是一個int變數,但是在函數中取得其指向的值時要顯式轉換為int*
void swap(int * p,int * q)
{
int t = *p;
*p=*q;
*q=t;
printf(“swap函數排序*p=%d,地址是%d,*q=%d地址是%d\n\n”,*(int*)p,*p,*(int*)q,*q);
return;
}
int main(void)
{
int a =20,b=10 ,*p = a,*q= b;
printf(“原來主函數a地址是%d,b地址是%d,p和q是%d和%d\n\n”,a,b,p,q);
swap(p,q); //若ab則交換地址,實現不改變ab的值且排序
printf(“再次列印:a=%d,b=%d,*p=%d,*q=%d,p地址%d,q地址%d\n”,a,b,*p,*q,p,q);
return 0;
}
C語言指針問題
指針就是地址,而指針變數就是存放地址的變數,比如int
*p;*p整個來看就是變數,和變數的含義是一樣的,而p表示的才是指針變數,裡面存的是一個地址(指針);*p表示的是去這個地址的內容,也就是相當於變數。所以int
a,*p實際上定義的都是變數。是取址運算符,n是去變數n存儲單元的地址,n也就是一個指針(地址),指針和地址的意義其實是一樣的。指針變數就是可以存放不同指針的變數。指針加上*,表示的是取指針存儲單元的內容。和變數是一樣的。指針這裡很難理解的,你光靠別人說的是理解不了的,好好看看書上的解釋,再自己變成試驗。指針就是地址,地址就是指針,指針變數就是存放不同指針/地址的變數,指針變數前面加*就是取指針/地址存儲單元的內容。
關於c語言中指針的小疑惑!
你看到的*p1=a應該是在定義的時候就給值的情況比如: int *p=a
而p1=a應該是定義之後給值的情況比如: int *p; p=a;
C語言規定,可以在定義時給值的
關於C語言指針的一個疑問?
int *p=a;這是定義p,並對p賦值
*p=a;這是對*p賦值
兩者不一樣
關於C語言指針定義的問題
a是行指針,也就是指向一個包含3個int一維數組的指針(地址就是指針,a是指針常量,p是指針變數)。你要將a賦值給p,就要用行指針來接,所以你聲明的p是指向一個包含3個int的指針p;如果聲明的是int
*p,p就是指向int的指針,數據類型不匹配。
輸出的話,可以這樣p[i][j],上面說了,a,p都是地址,a能做的,p就能,只是說p是可變的,a不是。
當然你可以強轉:
int*p;
p=(int*)a;
但是這樣的話你的p是,指向int的指針,
輸出就不能那樣了,改為:
printf(“%d”,*(p+3*i+j));
或者
printf(“%d”,p[3*i+j]);
就是把二維當一維,直接看元素在第幾個。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240406.html