C语言-指针
初始换赋值
存储类型 数据类型*指针变量名 = 初始化地址
例:
int i;
int*p=&i; p就是i的地址
int I;
int*p=&i;
int*q=p; p也可以等于q作为地址
//内存地址...内存中存储的编号
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 指针的声明
int *p1;//声明了一个指向整型空间的指针变量 *号位置不作严格要求 int* p;
float *p2;// 声明一个指向实型空间的指针变量
char *p3;//声明了一个指向字符型空间的指针变量
int a=12;
float b=3.14;
char c='m';
// 指针的赋值
p1 = &a;//指针平指向了整型空间a
p2=&b;//指针平指向了实型型空间b
p3=&c;//指针平指向了字符型空间c
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 指针的声明
int *p1;//声明了一个指向整型空间的指针变量 *号位置不作严格要求 int* p;
float *p2;// 声明一个指向实型空间的指针变量
char *p3;//声明了一个指向字符型空间的指针变量
int a=12;
float b=3.14;
char c='m';
// 指针的赋值
p1 = &a;//指针平指向了整型空间a
p2=&b;//指针平指向了实型型空间b
p3=&c;//指针平指向了字符型空间c
printf("%d\n",*p1);// *p1 表示取指针p1指向的空间的值=12
int array[5]={1,2,3,4,5};//数组名array表示数组的首地址(第一个元素的地址)
// printf("%p\n",array);
// printf("%p\n",&array[0]);
// printf("%p\n",&array[1]); //数组间占据字符4
//
// int* p4;
// p4=array;//完全成立,可以赋值
//
// char name[3]={'i','o','s'};//字符数组
// char name0[4]={'i','o','s','\0'};//字符串\0
//
for (int i=0; i<5; i++)
{
*(array+i)=i+100;//指针和i进行相加运算时,表示指针向后挪,指向下一内存单元
}
for (int i=0; i<5;i++ )
{
printf("%d ",array[i]);
}
、、、、、、、、、、、、、、、、、、、、、
void exChange(int a,int b)
{
int *p1;
p1=&a;
*p1=b;//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
{
int *p1;
p1=&a;
*p1=b;//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
printf("%d %d",a,b);
********************************
void exChange(int *a,int *b)
{
int c; //c是中间量,用来存放*a的值,再赋给*b的值
c=*a;
*a=*b; //赋值的顺序不能变
*b=c;
//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
}
int main(int argc, const char * argv[]) {
int a=33,b=44;
exChange(&a, &b);//函数的调用过程中,如果传递的参数只是普通的(非指针)变量值,只是相当于拷贝了一份数据给函数的参数,对当期函数里面的变量值,没有任何影响
printf("%d %d",a,b);
{
int c; //c是中间量,用来存放*a的值,再赋给*b的值
c=*a;
*a=*b; //赋值的顺序不能变
*b=c;
//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
}
int main(int argc, const char * argv[]) {
int a=33,b=44;
exChange(&a, &b);//函数的调用过程中,如果传递的参数只是普通的(非指针)变量值,只是相当于拷贝了一份数据给函数的参数,对当期函数里面的变量值,没有任何影响
printf("%d %d",a,b);