c語言point
⑴ 在c語言里,point有什麼作用
一個普通的變數名,字面意思是"點"
可能用來做表示點的結構名,譬如
typedef struct point
{
int x;
int y;
}point;
⑵ C語言 point=(char*)i point為指針 i為長整形數據
(char*)i將i強制轉換為字元類型,將值賦給point,賦值後輸入指針的值為i的值(具體結果要看是以什麼格式輸入)
如果point為指針,這種賦值能通過編譯,但沒有實際意義。
⑶ C語言,關於指針 (point) 的程序。拜託了。謝謝。
#include <stdio.h>
main( )
{
int a=10,b=100,c=1000; //調試:a(0x0012ff7c) b(0x0012ff78)
c(0x0012ff74) 整型在C++中佔4位
可以看出a,b,c內存單元是連續的
int *p=&c; //這里p指向c的內存單元
for(int i=0;i<10;i++)
printf("%d,",*p++);//內存當中abc的存儲順序為c,b,c,..
printf("\n");
}
由於你將p指向了c,所以顯示時將從c內存單元里的內容開始,依次向後移動4位,而a,b,c在內存中是相鄰的,所以顯示結果為c,b,a,......由於0x0012ff80地址以後的內存單元沒有用到,裡面是隨機數,所以以後顯示的數字將不確定
⑷ 用c語言定義一個坐標點類型Point,每個Point有成員x, y表示其坐標。輸入一個函數,求象限
用c語言定義一個坐標點類型Point,每個Point有成員x, y表示其坐標。輸入一個函數,求象限
這么早已經習慣每天
⑸ C語言怎麼用point關鍵字定義一個指針
point在C語言裡面是關鍵字,自己定義關鍵字的時候最好都不要使用C語言裡面有的關鍵字,這樣容易出錯~~
⑹ C語言,關於指針 (point) 的程序。文字列的長度。
我知道有一個人寫了一些文章然後有人整理了下來。
他寫的東西都是代碼, 而且是非常詳細的注釋那種的。
這個人叫管寧
你可以到網上搜搜。
我這里有給你貼出來一點,你可以看看是否合你的意:
在c/c++中利用數組名作為函數參數傳遞排序和用指針進行排序的例子。
以下兩個例子要非常注意,函數傳遞的不是數組中數組元素的真實值而是數組在內存中的實際地址。
#include <stdio.h>
void main(void)
{
void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數組並初始化 */
int i;
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
reversal(a,10); /* 調用自定義涵數進行反向顯示排序,並把數組a的起始地址傳送給形式參數x */
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
}
void reversal(x,n)
int x[],n; /* 定義形式參數 */
{
int m=(n-1)/2; /* 計算10個數需要循環幾次,因為是兩兩調換第一個數組是x[0]故應該是int(9/2) */
int temp,i,j; /* 建立零時變數temp用於每次交換處理時零時存儲x的值 */
for (i=0;i<=m;i++)
{
j=n-1-i; /* 反向計算出被調換的數組下標,例如x[0] 對應的x[n-1-i]就是x[9] */
temp=x;
x=x[j];
x[j]=temp;
}
}
/* 次題需要注意的是:這里由於a[10]和x[10]是共同享內存地址位的所以進行交換後a[10]的實際值也就發生了改變 */
#include <stdio.h>
void main(void)
{
void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數組並初始化 */
int i;
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
reversal(a,10); /* 調用自定義涵數進行反向顯示排序,並把數組a的起始地址傳送給形式參數x */
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
}
void reversal(x,n)
int *x,n; /* 定義x為指針變數 */
{
int temp,*p,*i,*j; /* 這里需要注意的是temp用與交換的時候臨時存儲數據的 */
i = x; /* 利用指針變數i存儲數組a的起始地址 */
p = x + ((n-1)/2); /* 計算最後一次循環的時候數組a的地址 */
j = x + n - 1; /* 計算數組a也就是a[9]的結束地址好用於交換 */
for (;i<=p;i++,j--) /* 利用循環和指針進行數組元素值的交換 */
{
temp=*i; /* 用temp臨時存儲*i也就是循環中a實際的值 */
*i=*j;
*j=temp;
}
}
/* 此例同樣要注意到利用指針進行數組的操作同樣改變了實際數組各元素的值 */
==============================
c/c++中指針學習的兩個絕好例子
對於眾多人提出的c/c++中指針難學的問題做個總結:
指針學習不好關鍵是概念不清造成的,說的簡單點就是書沒有認真看,指針的學習猶如人在學習饒口令不多看多學多練是不行的,下面是兩個很經典的例子,很多書上都有,對於學習的重點在於理解*x和x的理解,他們並不相同,*x所表示的其實就是變數a本身,x表示的是變數a在內存中的地址,如果想明白可以輸出觀察cout<<*x"|"x;,當定義了int *x;後對x=&a的理解的問題。仔細閱讀和聯系下面的兩個例子我想指針問題就不是難點了!
#include <stdio.h>
main()
{
int a,b; /* 定義a,b兩個整形變數用於輸入兩個整數 */
int *point_1,*point_2,*temp_point; /* 定義三個指針變數 */
scanf("%d,%d",&a,&b); /* 格式化輸入a,b的值 */
point_1=&a; /* 把指針變數point_1的值指向變數a的地址 */
point_2=&b; /* 把指針變數point_2的值指向變數b的地址 */
if (a<b)
{
temp_point=point_1; /* 這里的temp_point是用於臨時存儲point_1的值也就是變數a的地址的 */
point_1=point_2; /* 把point_2的值賦予point_1 */
point_2=temp_point;
/* 由於point_1的值已經改變無法找到,利用前面臨時存儲的也就是temp_point找回原point_1的值賦予point_2,打到把point_1和point_2值對換的目的*/
}
printf("%d,%d",*point_1,*point_2); /* 利用*point_1和*point_2也就是分辨指向b和a的方法把值顯示自愛屏幕上 */
}
/* 此題需要注意和了解是的此法並沒有改變變數a,b的值只是利用指針變數分別存儲a和b的地址,然後再把那兩個指針變數的值對換一下其實就是存儲在
指針變數裡面a與b的地址對換,在利用*point_1和*point_2的方式把調換後的值顯示出來這里的*point_1實際就是a,此中演算法並非真的改變a,b的值,而是
利用指針進行地址交換達到大小排序的目的.
*/
#include <stdio.h>
main()
{
int a,b; /* 定義a,b兩個整形變數用於輸入兩個整數 */
int *point_1,*point_2; /* 定義三個指針變數 */
scanf("%d,%d",&a,&b); /* 格式化輸入a,b的值 */
point_1 = &a; /* 把指針變數point_1的值指向變數a的地址 */
point_2 = &b; /* 把指針變數point_2的值指向變數b的地址 */
compositor(point_1,point_2); /* 調用自定義的排序涵數,把a,b的地址傳遞給point_1和point_2 */
printf("%d,%d",a,b); /* 列印出a,b的值 */
}
static compositor(p1,p2)
int *p1,*p2; /* 定義形式參數p1,p2為指針變數 */
{
int temp; /* 建立臨時存儲變數 */
if (*p1<*p2) /* 如果*p1<p2,注意這里的*p1和*p2其實就是a和b */
{
temp = *p1; /* 利用變數temp用於臨時存儲*p1和就是a的值 */
*p1 = *p2; /* 將*p1的值也就是a的值換成*p2的值也就是b的值,等價於a=b */
*p2 = temp; /* 將*p2的值也就是temp的值等價於b=temp */
}
}
/* 注意:此題與上題不同的是,直接改變了a於b的值達到真實改變的目的 */
⑺ c語言指針的指針的理解
指針,即指向數據的儲存地址,方便計算機尋找數據,可以指向變數,函數,數組,甚至指向指針(如int **point),組合起來,好多方式。定義並指向一個變數後,沒*,point代表變數地址,有*,代表地址里的值即變數值,指向指針的指針**point分開理解,首先指向*point,而*point代表變數的值
⑻ C語言中point結構體
估計是一個坐標的結構體,
首先, 這個結構包括兩個部分, 分別為 x 坐標 和y 坐標.
接著, 有兩個構造函數, 第一個為默認的構造函數;
第二個為可初始xy坐標的函數.
一般用在需要標注位置的程序上.
⑼ C語言 point(char*pt); main() {char b[4]={'a','c','s','f'},*pt=b; pt=point(pt); printf("%c
就算函數調用成功,輸出也為d,而不是a,數組下標是從0開始.
被調函數的計算結果在離開函數大括弧後就已經不在了,
回到主函數的變數p並不是調用函數後的計算結果,p仍然是
數組b的首地址,所以輸出是a.
char
*p;//定義全局變數
point(char
*c)
{
p=c+3;
}//全局變數返回計算結果
main()
{
char
b[4]={'a','b','c','d'};
p=b;//p為數組首地址
point(p
);//調用函數,地址加3
printf("%c\n
",
*p);//輸出為b[3]
}
⑽ C語言指針基本概念及其指針變數的定義是什麼
指針是常見間接訪問方式.指針就像一個快捷方式,它指向內存的一個地址,可以通過指針就可以間接的訪問到數據。對於計算機,訪問內存的方式有兩種,直接訪問和間接訪問。直接訪問通過就是通過變數名稱去訪問。指針概念是構成C/C++的重要元素之一,是變數的一種類型,存放的是指定類型數據的地址,而同類型變數存放的是數據。
指針變數:就是一個變數,其值是可變的,與整形變數、浮點變數等等的命名規則完全相同。 「指針」是概念,「指針變數」是具體實現。指針類型說明,即定義變數為一個指針變數; 指針變數名; 變數值(指針)所指向的變數的數據類型。
(10)c語言point擴展閱讀:
與其他高級編程語言相比,C 語言可以更高效地對計算機硬體進行操作,而計算機硬體的操作指令,在很大程度上依賴於地址。指針提供了對地址操作的一種方法,因此,使用指針可使得 C 語言能夠更高效地實現對計算機底層硬體的操作。另外,通過指針可以更便捷地操作數組。在一定意義上可以說,指針是 C 語言的精髓。