您的位置:首页 > 编程语言 > C语言/C++

c语言学习笔记--指针

2014-05-27 10:59 471 查看
#include<stdio.h>

void swap(int *p1,int *p2){

int temp;

temp = *p1;

*p1 = *p2;

*p2 = temp;

}

void main(){

int a = 1,b = 2;

int *p1 = &a,*p2 = &b;

printf("a=%d,b=%d",a,b);

swap(p1,p2);

printf("a=%d,b=%d",a,b);

}

1.p1,p2为指针变量,值为a,b地址。

2.swap实现将指针p1,p2指针指向的对象的值交换。

3.printf中的符号含义:

%d:输入输出为整形 %ld 长整型 %hd短整型 %hu无符号整形 %u %lu

%s:输入输出为字符串 %c字符

%f:输入输出为浮点型 %lf双精度浮点型

#include<stdio.h>

int main(){

int a = 1,b = 10;

int *p1=&a,*p2=&b;

printf("a的地址为%d\n",p1);

printf("b的地址为%d\n",p2);

printf("*(p1-1)的值为%d\n",*(p1-1));

return 0;

}

1.数据保存在栈中,地址由高到底,int型数据为4个字节,a,b地址相差4个字节。

2.*(p1-1)指向b,p1减一,内存中向低地址移动4个字节。

指针函数

#include <stdio.h>

#include <string.h>

int *max(int x[],int y[],int *p,int *c){

int temp=x[0];

for(int i = 1;i<=9;i++){

if(temp<=x[i]){

temp = x[i];

*p = i;

*c = 1;

}

}

for(int ii = 1;ii<=9;ii++){

if(temp<=y[ii]){

temp = y[ii];

*p = ii;

*c = 2;

}

}

return 0;

}

void main(){

int *p1,m,n;

int a[10]={0,1,2,3,4,5,6,7,8,9};

int b[10]={10,11,12,13,14,15,16,17,19,18};

p1=max(a,b,&m,&n);

printf("m=%d,n=%d\n",m,n);

}

1.函数返回值与指向该函数的指针类型必须相同。

2.如果函数不是指针函数(不带*号),则定义指向该函数的指针后面得带形参,而且定义该指针时需要加括号,如(*p1),并且赋值时不带形参。(下述方法指针指向的函数不带*号)

int (*p1)(int[],int[],int*,int*);

p1=max;

(*p1)(a,b,&m,&n);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: