A. c語言中 !p 是什麼意思
意思:使當前指針指向鏈表的下一個結點。
一般作用在數據結構中的單鏈表裡由應用,語句中的p一般指向一個結構體類型的數據,此類型的數據通常表示節點;結構體里存放的一些數據和記錄下一個節點地址的指針變數next;這個next就好比鏈條一樣,連接著一個個節點。
->是一個整體,它是用於指向結構體、C++中的class等含有子數據的指針用來取子數據。換種說法,如果在C語言中定義了一個結構體,然後申明一個指針指向這個結構體,那麼要用指針取出結構體中的數據,就要用到「->」.
(1)c語言p1a什麼意思擴展閱讀:
舉個例子:
struct Data
{
int a,b,c;
}; /*定義結構體*/
struct Data * p;/*定義結構體指針*/
struct Data A = {1,2,3};/*聲明變數A*/
int x;/*聲明一個變數x*/
p = &A ; /*讓p指向A*/
x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的數據項a賦值給x*/
/*由於此時p指向A,因而 p->a == A.a,也就是1*/
對於一開始的問題p=p->next;這應該出現在C語言的鏈表,這里的next應該是一個與p同類型的結構體指針,其定義格式應該是:
struct Data
{
int a;
struct Data * next;
};/*定義結構體*/
main()
{
struct Data * p;/*聲明指針變數p*/
p = p->next;/*將next中的值賦給p*/
}
B. C語言中 p1=a0 a0.next=a1是什麼意思 求解答
沒有看到定義的格式不敢妄下斷言。不過根據經驗可知:
a0是假設是一個帶有返回值的函數,但是好像就應該是p1= a0();,你又沒有括弧。
並且只有類或者結構體才能使用 . (點),指針是使用->,由此可知a0應該是結構體或者類。
所以最後答案是:
p1 = a0 是拷貝類或者結構體,將a0拷貝給p1。
a0.next = a1就是將a1的值給a0裡面的next。
PS:這應該是C++裡面的內容了吧。
C. p.a在c語言中是什麼意思啊
p 是struct S 類型的結構體,p.a就是p這個結構的成員a,
data[1]也是struct S 類型的結構體, p=data[1];
data[1]={20,200} 所以 p.a=20;執行",++(p.a));結果21
D. C語言程序指針p[-1] 表示什麼意思呀
呵呵,程序中出現這種用法說明這個程序員比較自我。一般不見以這樣用。
要根據上下文判斷才知道,不過從字面意思來說就是去p所代表的內存地址的前一塊。
比如:
int num[10] = {0,1,2,3,4,5,6,7,8,9};
int *p = num+2;//此時p代表的是num[2]的地址,p[0]就是num[2],p[-1]就是num[1],p[-2]就是num[0];
但是p[-3]就錯了,因為你訪問了一個未知的地址,會出現嚴重錯誤的。
E. c語言中p*是什麼意思,他和*p的區別是什麼
p*
如是出現在算術表達式中,這個星號就是乘號,表示相乘,如果是出現在聲明中(如變數定義),那就表明p是一種數據類型,p*表示要聲明這種類型的指針變數。
*p
依然可以表示相乘的運算,也可表示提取p指針指向的位置保存的值。例如:
int a=9;
int *p=a;
printf("%d",*p);
這個printf()調用中的*p表示提取p指針指向的地址(即變數a的地址)保存的值(即變數a的值)
F. C語言里的P0,P1,等等這些是什麼意思怎麼決定的哪裡是0哪裡是1呢為什麼用P呢
這和c語言學習沒有關系。。P0P1是單片機的輸出輸入介面,是在單片機實際應用中才會遇到的。。
現在先學會c語言的基礎語句應用,不要考慮這些。。當c語言基礎語句和編程都有基礎了,這些定義都不再是困擾。
學習是個漸進積累過程。。不懂的就先放下,踏實學會c語言語句及編程,然後再接觸其他應用就會很容易了。
G. C語言中的每個符號分別是什麼意思
1.功能:求三個整數的平均值。程序如下:
#include <stdio.h> /*載入頭文件stdio.h*/
void main() /*主函數main*/
{
int a,b,c,d; /*定義a,b,c,d為整型變數*/
a=105;
b=75;
c=85;
d=(a+b+c)/3;
printf("d=%d\n",d); /*顯示"d=某數"並換行,某數是d的值*/
getchar(); /*等待用戶,按任意鍵退出*/
return 0;
}
2.功能:由鍵盤輸入多邊形的邊數,求其內角和。程序如下:
#include <stdio.h>
void main()
{
/*辨別多邊形是否成立,不成立重新執行do-while語句間的命令*/
do
{
int x;
printf("n=");
scanf("%d",&x); /*由鍵盤輸入x的值*/
printf("%d\n",(x-2)*180); /*顯示內角和,公式為(x-2)*180*/
/*辨別多邊形是否成立,不成立顯示「Error」,成立顯示「Right」*/
if (x<=2)
printf("Error\n");
else
printf("Right\n");
}
while (x<=2); /*do-while語句*/
getchar();
return 0;
}
3.功能:由鍵盤輸入兩個數,顯示器上顯示較大數。程序如下:
#include <stdio.h>
int big(int,int); /*創建整型變數函數big*/
void main()
{
int x,y;
scanf("%d,%d",&x,&y);
printf("big is %d\n",big(x,y));
/*輸出big函數的值,因為main函數與用戶自定義函數big無關系,所以printf後的輸出項表是big(x,y),而不是big(n1,n2)*/
getchar();
return 0;
}
int big(int n1,int n2) /*用戶自定義函數big*/
{
if (n1>n2)
return n1; /*返回n1值*/
else
return n2; /*返回n2值*/
}
4.功能:由鍵盤輸入一個等腰三角形的層數,畫一個這樣的三角形。程序如下:
#include <stdio.h>
void main()
{
int i,j,n;
printf("n:");
scanf("%d",&n);
for (i=1;i<=n;i++) /*循環n次,每次輸出一行*/
{
for (j=1;j<=n-i;j++) /*輸出該行前面的空格*/
printf(" ");
for (j=1;j<=2*i-1;j++) /*輸出該行中的星號*/
printf("*");
printf("\n");
}
getchar();
return 0;
}
注釋:不能輸入太多的行數,如10000。
5.功能:由鍵盤輸入一個最大值,求2到這個最大值中的所有質數(素數)。程序如下:
#include <stdio.h>
#include <math.h> /*數學文件*/
void main()
{
int n,m,flag,i,j,num=1;
printf("n:");
scanf("%d",&n);
printf("2~%d:\n",n);
for (i=2;i<=n;i++) /*循環查找質數*/
{
flag=1;
m=(int)sqrt(i);
for (j=2;j<=m;j++)
if (i%j==0) /*條件為真時表示不是質數,退出for循環*/
{
flag=0;
break;
}
if (flag==1) /*條件為真時表示i是質數*/
{
printf("%4d",i);
if (num++%10==0) /*每行最多輸出10個數*/
printf("\n");
}
}
printf("\n");
getchar();
return 0;
}
6.功能:顯示保護屏幕。程序如下:
#include <stdlib.h> /*綜合庫*/
#include <graphics.h> /*繪圖庫*/
int main()
{
int gdriver=DETECT; /*定義圖象驅動器為DETECT*/
int gmode=DETECT; /*定義圖象模式為DETECT*/
long n; /*定義長型變數n*/
initgraph(&gdriver,&gmode,"E:\TC\bgi");
/*進入圖象狀態(警告:""之間的是圖象驅動器的路徑,建議網友們設置為空,即只有"",或設為編程系統的路徑,例路徑是C:\TC,那麼就是輸入C:\TC\bgi)*/
sleep(1); /*暫停一秒,以保證無誤差進入圖象狀態*/
for (n=1;n<=40000000;n++) /*畫40000000個圓*/
{
setcolor(rand()); /*作圖顏色隨機*/
circle(random(639),random(639),25); /*畫圓,位置隨機,半徑為25*/
}
getchar();
return 0;
}
H. c語言中p1[-1]什麼意思
在c語言中p1指針,後面的符號用來指向該指針所指向的數據塊中的某個元素。