C编程中的指针
#编程 #problemsolving #c #指针

C语言中的指针是一个存储另一个变量的地址的变量。
如果我们要存储一个变量的地址到另一个变量,则该变量称为指针。
它与星号符号(*)一起声明。声明指针的语法如下:

int *p;

分配和访问变量:

 #include <stdio.h>
 int main()
 {
     int a;
     int *p;
     scanf("%d", &a);
     p = &a;
     printf("%p\n", p);
     printf("%d\n", *p);
     return 0;
 }

不同类型的指针

有四种类型的指针,它们是:

  • NULL指针
  • 无效指针
  • 野生指针
  • Dangling Pointer

Four types of Pointer in C:: Md Shah Jalal
空指针:
未分配任何值但NULL的指针被称为空指针。
如果在声明时指针中没有任何地址要在指针中指定,我们可以分配空值。它将提供更好的方法。
语法:

Int *p = NULL;

示例:

#include<stdio.h>

int main(){
int *p = NULL;

printf(“p=%d”,*p);
}

无效指针:
当指针用空隙关键字声明时,则称为“无效指针”。要打印该指针的价值,您需要将其输入。

语法:
void *p;

示例:

#include<stdio.h>

int main()

{
   int a=2;
   void *p;

   p= &a;

   printf("After Typecasting, a = %d", *(int *)p);

return 0;
}

野生指针:
野生指针仅声明但未分配任何变量的地址。它们非常棘手,并且会推理细分错误。

示例:

#include<stdio.h>

int main(){
  int *p;

  printf(“p=%d”,*p);

  return 0;
}

悬空指针:
指向已删除(或释放)的内存位置的指针称为悬空指针。

#include<stdio.h>
#include<stdlib.h>

int main()
{
  int *p=(int *)malloc(sizeof(int));

  int a=5;

  p=&a;

  free(p);

  //now this p is known as dangling pointer.

printf(“After deallocating its memory *p=%d”,*p);

  return 0;

}

指针指针
指针将间接通过另一个指针指向变量。
这样的东西:pointer of pointer of pointer of pointer of variable

Pointer to Pointer:: Md Shah Jalal
语法:
Int **p;

示例:

#include <stdio.h>
 int main()
 {
     int a = 5;
     int *p = &a;
     int **q = &p;
     printf("%d\n", a);
     printf("%p\n", p);
     printf("%p\n", q);
     **q = 7;
     printf("%d\n", a);
     return 0;
 }

按价值通过并通过参考
通过 我们将通过参考而不是通过价值传递。
示例:

#include <stdio.h>
int swap(int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;

}
int main()
{
    int x = 5, y = 7;
     printf("Before swapping x=%d , y=%d\n", x, y);

    swap(&x, &y);
    printf("After swapping x=%d , y=%d\n", x, y);
return 0;
}