C语言6(指针)

来源:互联网 发布:mac的excel粘贴不管用 编辑:程序博客网 时间:2024/04/30 07:59

                                             C语言6(指针)

#include <stdio.h>

#include <stdlib.h>
void exchange1(int a){
    
    a = 10;
}


void exchange(int *a){
    
    *a = 10;

}

void exchangeOfPosition(int *a, int *b){
    
    int temp = *a;
    *a = *b;
    *b = temp;
    
}

int sumOfNumber(int a, int b,int *cha){
    
    *cha = a - b;
    return a + b;
}

int main(int argc, const char * argv[]) {

int number = 20;

exchange(&number);
printf("number = %d\n",number);

// exchange1(number);
// printf("number = %d\n",number);

#pragma mark - 指针的定义
//基本数据类型 *指针变量名;
// int a = 10;
//
// int *p;
//
// p = &a;
//
// printf("%d\n",*p);

//*:1.在定义时,*号只是一个标识,表示改变量是一个指针变量
// 2.单独使用,表示取值

// *p = 80;
// printf("%d\n",*p);
//
//
// int *p1 = NULL;


// char c = 'c';
// int *pa;
// pa = &a;
// printf("%c\n",*pa);


// int *pa = &a;

/*
1.类型要匹配
2.定义一个指针变量后,要初始化,int *p = NULL;
3.指针只能存地址
4.指针类型的变量都占8个字节
*/

#pragma mark - 指针作为函数参数

// int a = 10;
// int b = 20;
// exchangeOfPosition(&a, &b);
// printf("a = %d,b = %d\n",a,b);
//
// int cha = 0;
// int sum = sumOfNumber(a, b, &cha);
// printf("sum = %d,cha = %d\n",sum,cha);

#pragma mark - 指针和数组

// int array[3] = {1,2,3};
// for (int i = 0; i < 3; i ++) {
// printf("%p\n",&array[i]);
// }
//
// int *pa = array;
// for (int i = 0; i < 3; i ++) {
// // printf("%d\n",pa[i]);
// printf("%d\n",*(pa + i));
// }
//
//
// printf("pa = %d\n",*( array + 0));
// printf("pa& - %p\n",array + 1);
//
/*
1. array[i]
2.*(pa + i)
3.pa[i]
*/


// int newArray[3] = {1,2,3};
// int *pa1 = newArray;
// for (int i = 0; i < 3; i ++) {
// printf("pa1 = %d\n",*pa1);
// pa1 ++;
//
// }



#pragma mark - 指针和字符串

// char s[] = {'i','0','s','\0'};
// char s1[] = "ios";
// printf("s1 = %s\n",s1);
//
//
//
// char *ch = "ios";
// printf("%s\n",ch);
//
// char *ch1 = "ios";
//
//
// s1[0] = 't';
// printf("ssss = %c\n",*(ch + 1));
// *(ch + 1) = 'u';


// char s1[100];
// printf("input s:");
// scanf("%s",s1);
// printf("%s\n",s1);

// char *s2 = malloc(30);
// printf("input string:");
// scanf("%s",s2);
// printf("s2 = %s\n",s2);
//
// free(s2);
/*
malloc alloc new

free release delete
*/

#pragma mark - 指针数组和数组指针
//数组指针 :一个指针 指向数组

// int array1[3] = {1,2,3};
// int *pp = array1;
//
//
// //指针数组: 一个数组 数组中存放指针
// char *s1 = "ios";
// char *s2 = "jack";
// char *s3 = "rose";
//
// char *stringArray[3] = {s1,s2,s3};




#pragma mark - 拓展指针变量的运算
int a = 10;
int *p = &a;
// printf("%d\n",*p);//10
// printf("%p\n",p);//a地址
// printf("%p\n",&a);//a地址
// printf("%p\n",&p);//p地址
// printf("%p\n",&*p);//a地址

/*

*p++ = *(p++) ,*(p + n)

*/
printf("前:%p\n",p);
printf("%d\n",*(p + 9));
printf("后:%p\n",p);

return 0;

}

0 0