天天看點

C語言-說透指針指針

指針

簡單的了解

<u>指針就是變量的位址</u>

指針變量的定義
int* p;
double* p;
char* p;
           
指針變量的位址
int a;
int* p=&a;
//或者也可以這樣寫
int a;
int* p;
p=&a;
           

注意

需要注意的是:

int*

是指針變量類型,後面的

p

才是指針變量 用來儲存位址,是以位址&a是指派給

p

而不是

*p

指正與數組
#include<stdio.h>
int main(){
    int a[10]={1,2,3,6,3,3,0};
    int* p=a;
    printf("%d",*p);
    return 0;
}
           

output

1

指針作為參數
#include<stdio.h>


void swap(int *a,int *b);
void main(){
    int str[10];
    int i,j;
    printf("請輸入十個數字并且以空格分開\n例如這樣1 2 3 6 5 2 3 5 4 32 2\n");
    for(i=0;i<10;i++){
        scanf("%d",&str[i]);
    }

    for(i=0;i<10;i++){
        for(j=i+1;j<10;j++){
            if(str[i]>str[j]){
                swap(&str[i],&str[j]);
            }
        }
    }
        printf(" \n");

    for(i=0;i<10;i++){
        printf("%d ",str[i]);
    }

        printf("\n");

}

void swap(int *a,int *b){
    int c;
    c=*a;
    *a=*b;
    *b=c;
}


           
#include<stdio.h>
void change(int x){
    x=1;
}

int main(){
    int x=2;
    change(x);
    printf("%d",x);
    return 0;
}

//output:2
           
#include<stdio.h>
void change(int &x){
    x=1;
}

int main(){
    int x=2;
    change(x);
    printf("%d",x);
    return 0;
}

//output:1