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);
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);
相关文章推荐
- C语言学习笔记(13指针)
- C语言学习笔记(15指针)
- C语言指针学习笔记:指向结构体的指针
- C语言指针举例(From(新浪微博:@M了个J))学习笔记
- iOS开发学习笔记 2-4 C语言部分 指针
- what's in string? c语言string类函数实现汇总 都是学习使用指针的好例子啊(算是读书摘抄和笔记吧)
- C语言-指针的基础学习笔记(2)
- C语言学习笔记(五)指针
- 【C语言学习笔记】指针的“加减”运算
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- C语言学习笔记(12指针)
- what's in string? c语言string类函数实现汇总 觉得都是学习使用指针的好例子(算是读书摘抄和笔记吧)
- C语言学习笔记(18多级指针)
- 数组和指针————C语言学习笔记1
- C语言学习笔记.指针1
- C语言学习笔记.指针2
- C语言-指针的基础学习笔记(1)
- C语言学习笔记【指针04】指针数组与指向指针的指针 推荐
- C语言学习笔记之成员数组和指针
- C语言学习笔记7--指针