黑马程序员——C语言中指针与其他数据类型的结合使用

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1:指向基本数据类型变量的指针

<pre name="code" class="plain">#include <stdio.h>
int main(int argc, const char *argv[])
{
	int a = 5;
	int *p = &a;
	printf("p = %p\n", p);
	printf("*p = %d\n", *p);
	return 0;
}


 

2:指向数值数组首元素的指针

int arr[5] = {};//数组名是地址常量,等于数组首元素地址,arr等价于&arr[0]

(1):初始化//arr等价于&arr[0],但是arr不能进行++运算!

int (*pArr) = &arr[0];//int (*pArr) = arr;

(2):赋值语句

int *pArr = NULL:

pArr = &arr[0]; //pArr = arr;

引用数组成员://pArr等价于arr

下标法:arr[i], pArr[i]

指针法:*(arr+i), *(pArr+i)

<span style="font-size:14px;">例:删除指定整数N</span>
<span style="font-size:14px;">#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NUM		10
int main(int argc, const char *argv[])
{
	int arr[NUM] = {};
	int i = 0;
	int j = 0;
	int n = 0;//删除的数
	int t = 0;//统计删除了多少个

	srand(time(NULL));
	for (i=0; i<NUM; i++){//输入
		*(arr+i) = rand()%1;
		printf("%d ", *(arr+i));
	}
	printf("\n");

	scanf("%d", &n);
	for (i=0; i<NUM-t; i++){//遍历数组
		if (*(arr+i) == n){//找到n
			for (j=i; j<NUM-1-t; j++){//循环前移
				*(arr+j) = *(arr+j+1);
			}
			t++;//计数+1
			i--;//防止不能删除相邻重复的成员
		}
	}

	for (i=0; i<NUM-t; i++){//输入
		printf("%d ", *(arr+i));
	}
	printf("\n");
	return 0;
}</span>


3:指向字符数组首元素的指针

字符串的常见表示形式:

(1):通过字符数组来保存字符串

例子:char buf[] = “abcd”;//buf栈,”abcd”

(2):通过字符指针来保存字符串的首地址

例子:char *p = “abcd”;//p字符串的首地址,p栈,”abcd”数据段中的只读存储区

(3):通过指向字符数组首元素的指针

例子:char buf[] = “abcd”, char *p = buf;


4:指向函数的指针

指针函数

函数指针

5:指向结构体变量的指针

6:指向结构体数组的指针







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值