1. c語言指針是什麼
C語言指針其實也是變數,只不過指針變數存儲的是其它變數的地址。
C語言里對變數取地址:&變數名,對指針取指向的變數的值:*指針。
指針有類型的區別,即指針指向什麼類型,要在定義指針時指定類型。
定義舉例:int *p;//p是指向int類型的指針,只能把int變數地址賦值給p。
用指針有很多安全隱患,容易內存溢出,泄漏。
java應該是出於安全考慮不用指針,C#語言也是。
2. C語言函數指針,怎麼寫我有個例子,修改修改
您好,很高興回答您的問題。
你的程序問題出在了對函數指針的聲明。
因為你是把函數指針指向void func(int a),所以函數指針應該是「指向有一個int參數並且返回值為空的函數指針」,而你聲明指針的時候沒有說明有一個int參數,並且聲明後面少了分號。所以第二行應該改為
void(*pf)(inta);
這樣就好了。
希望對你有幫助,祝學習愉快哈。
3. C語言編如何寫指針函數
1
#include<iostream>
using namespace;
void main()
{
int a=0,b=0;
int *s=a;int *p=b;
cout<<「please the two numbers」;
cin>>a;
cin>>b;
int fun(int *a,int *b)
{
if(*a==*b)
{
cout<<"different\n";return 1;
else cout<<"same\n"; return 0;
}
fun(s,p);
}
include<iostream>
using namespace std;
void main()
{
int a[10]={0};
int i=0,j=0,k=0,p=0,m=0;
int *x=a;int *n=a;
for(;i<=9;++i)
{
cout<<"input the "<<i+1<<"number(s)";
cin>>a[i];
}
int fun(int *a)
{
for(;*x!=null;++x)
for(;m<=9;++m)
{
if(*x<a[m]) break;
n=x;
}
cout<<"the max is"<<*n;
}
4. C語言指針寫法
這有什麼亂的?這三種寫法都一樣啊。定義指針的時候*要在類型的右邊,變數的左邊。至於中間有多少空格沒關系的,但也不能沒空格。比較規范的是第二種寫法。
比如說:
int
*a,b;
這樣就表示定義了一個整型的指針a,定義一個整型變數b。
5. C語言的指針怎麼用啊
在你提供的代碼上進行了增加,我感覺你們老師可能是想讓你們把指針用在數組上吧,對於一個指向數組的指針p,p++指向數組的下一個元素。此外,使用指針可以很好的提升代碼執行效率。有問題可以互相交流。
#include <stdio.h>
#include <stdlib.h>
int square(int a, int b)
{
return a*b;
}
int main()
{
int i, j, l, w, s = 0, number = 1, max;
int *length = &l, *width = &w, *p = &i;
printf("請輸入您所需測量田地的數量: \n");
scanf("%d",p);
int a[*p];
int *y = a;
for(j = 0; j < *p; j++)
{
printf("請輸入第%d塊田的長和寬: \n", j+1);
scanf("%d %d",length,width);
*(y+j) = square(*length, *width);
s = s + *(y+j);
max = *y;
if( *(y+j) > max)
{
max = *(y+j) ;
number = j+1;
}
}
for(j = 0; j < *p; j++)
{
printf("您第%d塊田的面積為%d:\n",j+1,*(y+j));
}
printf("您的田地總面積為: %d \n", s);
printf("您最大面積一塊第為第%d塊,面積為%d !!!", number, max);
return 0;
}
6. c語言指針書寫規范
這兩種都是正確的寫法。
個人建議將*寫在空格的後面,即緊挨著變數名,像這樣:
int *p;
int **pp;
因為如果寫成int* p;會給人一種錯覺,以為p的類型是int*,所以會以為int* p1,p2;是定義了兩個指針變數,而實際上p2是一個整型變數,p1才是指針變數。
7. c語言指針用法
1、使用場景
使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int a[5]={0,1,2,3,4};
int *b,*d;
int c=2;
int *e=a; //e指向a數組首地址
//*b=2; 無法直接初始化
//printf("%d ", *b);
e=e+2; //移動兩個地址單元
d=&c; //d指向c的地址來表示值
c=4; //修改原c變數的值,d指針的值會發生改變
b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲值
*b=2;//分配空間後可以直接賦值了
printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);
2、類型說明
(1)int *a :表示一個指向int型變數的指針,指向的是變數的地址單元
(2)char *b:表示一個指向char變數的指針
*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:
int nums[5]={0,1,2,3,4};
int *a=nums;
printf("%d %d %p ",*a,*(a+1),a);
(7)c語言指針怎麼寫擴展閱讀:
指針的運算
指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算
(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。
int nums[5]={0,1,2,3,4};
int *a=nums;
(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。
int nums[5]={0,1,2,3,4};
int *a=nums;
a=a+2;
printf("%d ",*a);
結果輸出2。
參考資料來源 :指針-網路
8. C語言指針怎麼用
在c語言中.指針被用來表示內存單元的地址,如果把這個地址用一個變數來保存,則
這種變數就稱為指針變數。指針變數也分別有不同的類型,用來保存不同類型變數的地址。
嚴格地說.指針與指針變數是不同的,為了敘述方便,常常把指針變數就稱為指針。
內存是計算機用於存儲數據的存儲器,以位元組作為存儲單元.為了能正確的訪問內存單
元,必須為每一個內存單元編號,這個編號就稱為該單元的地址。如果將一個旅店比喻成內
存,則旅店的房間就是內存單元,房間號碼就是該單元的地址。
指針變數定義格式:
[存儲類型]
數據類型
*指針變數名[=初始值]
指針變數一旦定義,必須採用賦值的方式將其與某個變數實體相聯系,才能使用。指針
變數的賦值方式:
指針變數名;&普通變數名;