C语言基础_指针

一、指针变量

1、存储地址的变量

2、* 间接寻址符

3、%p 打印地址的格式字符

4、& 取地址符 获取变量的存储单元地址

5、int *p = &a p指向a的存储单元  [p就是一个指针  存储地址的变量]

6、*p 通过地址访问变量的存储单元(内容)

二、指针

    int a[5]={3,4,1,2,5};
      int *p = a;//定义一个指针指向首地址
    printf("p[2] = %d\n",p[1]);
    printf("%d\n",*(p+1));  

三、字符串指针

    char str[] = "hello";
    char * ps = str;
    int count = 0;                                  //int n = 0;
    for (int i =0; str[i] !=‘\0‘ ; i++) {     //   *(ps+n) != ‘\0‘;
        printf("%c ",*ps);                      //n++;
        ps++;
        count++;
    }
    printf("%d ",count);

四、交换两个变量

void swap(int *a,int *b){
    int temp = *a;
    *a = *b;
    *b = temp;
    printf("%d %d",*a,*b);
}
 int main(int argc, const char * argv[]) {
    int a = 1;
    int b = 2;
    swap(&a,&b);
return 0;
}

五、数组排序

void add(int *arr,int len){
    for (int i = 0; i < len-1; i++) {
        for (int j = 0; j < len -1 -i; j++) {
            if (*(arr+j) > *(arr+j+1)) {
                int temp = *(arr+j);
                *(arr+j) = *(arr+j+1);
                *(arr+j+1) = temp;
            }
        }
    }
    for (int i = 0; i < len; i++) {
        printf("%d ",*(arr+i));
    }
}
int main(int argc, const char * argv[]) {
        int arr[] = {33,88,23,56,37};
    add(arr,5);
  return 0;
}

1、数组排序2

void add(int * p,int len) {
    for (int i = 0; i<len-1; i++) {
        for (int j = 0; j < len-1-i; j++) {
            if (*(p+j)>*(p+j+1)) {
                int temp;
                temp = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = temp;
            }
        }
    }
    for (int i = 0; i < len ; i++) {
        printf("%d ",*(p+i));
    }
}
int main(int argc, const char * argv[]) {
        int arr[] = {33,88,23,56,37};
       int * p = arr;//定义指针指向首地址
        add(p,5);
     return 0;
}
时间: 2024-12-23 08:25:03

C语言基础_指针的相关文章

黑马程序员-C语言基础:指针类型与指针和数组、字符串的关系

//指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的存储空间: int *p = &a;//这样一句可以写,此时的*只是一个标志,表示这个*只是表示p是个指针: *p = &a;//这样写就错了:此时*p表示取p指向的空间的值: 指针疑问:指针既然都占据8个字节,那么为什么要划分类型, 是因为当用*p指针取值或者赋值的时候,知道该取几个字节,比

C语言基础知识----指针数组 &amp;&amp; 数组指针 &amp;&amp; 函数指针 &amp;&amp;指针函数

指针数组 && 数组指针 char (*ptr)[5]; //定义一个指向数组指针ptr,指向包含5个char类型的数组 char *a[5]; //定义一个指针数组a,包含5个char*类型指针 #include <stdio.h> int main(void) {     char *a[5]={"red","white","blue","dark","green"};   

C语言基础_排序

一.C语言基础 1)冒泡排序 int array[10] = {1,6,3,4,5,7,7,8,9,10}; for (int j = 0; j < 9; j++) { for (int i=0; i<9-i; i++) { if (array[i] > array[i+1]) { array[i] = array[i] ^ array[i+1]; array[i+1] = array[i] ^ array[i+1]; array[i] = array[i] ^ array[i+1];

8.Go语言基础之指针

Go语言中的指针不能进行偏移和运算,是安全指针. 在了解GO语言中的指针前,首先需要知道三个概念:指针地址.指针类型和指针取值. 1.Go语言中的指针 任何数据载入内存后,在内存中都有对应的地址,这就是指针. 为了保存一个数据在内存中的地址,需要指针变量. 比如"好好学习,天天向上"这个字符串写入程序中,程序一启动这句话就加载到内存(假设内存地址为0x123456),在程序中,把该字符串赋值给变量A,把该字符串的内存地址赋值给变量B. 这时变量B就是一个指针变量.通过变量A和变量B都能

Go语言基础之指针

区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. Go语言中的指针 任何程序数据载入内存后,在内存都有他们的地址,这就是指针.而为了保存一个数据在内存中的地址,我们就需要指针变量. 比如,“永远不要高估自己”这句话是我的座右铭,我想把它写入程序中,程序一启动这句话是要加载到内存(假设内存地址0x123456),我在程序中把这段话赋值给变量A,把内存地址赋值给变量B.这时候变量B就是一个指针变量.

黑马程序员_ C语言基础之指针(三)

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 1.什么是指针 2.数组和指针 3.函数指针 什么是指针 存放变量地址的变量我们称之为“指针变量”,简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为“直接引用”:

C语言基础_高级指针

一.结构体指针 1)结构体指针 指针指向结构体的存储单元 先对结构体的变量取地址 2)p指向结构体的起始地址 就是首个成员变量的地址 typedef struct teacher{ char name[20]; int age; }Teacher; int main(int argc, const char * argv[]) { Teacher t1 = {"laoluo",20}; Teacher *p = &t1; printf("p = %p,name = %

C语言基础_函数指针

一.函数  实现某特定功能的代码 1)函数名与数组名一样是地址 2)函数指针 指向函数的指针 可以通过函数指针调用指向的函数 3)返回值类型 (*函数指针名)(参数类型)  = 函数名 int maxValue(int a,int b){ return a > b ? a : b; } int (*p)(int,int) = maxvalwe; printf("%d\n",p(3,4)); //用指针去调用函数 4) 示例代码 int maxValue(int a,int b){

iOS开发之c语言基础Lesson-08 指针 上课笔记 与 试题练习

1 ////////////////Lesson 08 指针 课堂笔记 与练习///////////// 2 3 //指针:本质是一个指针变量,只不过该变量用来存储地址. 4 //地址:内存单元的编号,也是一个数,只不过是以0x开头的十六进制数. 5 6 // int a = 10; 7 // int *p = &a; //定义一个指针变量,将a的地址给指针变量p:p指向a 8 // a = 20; //直接访问 9 // printf("%d ", *p); 10 // *p