C语言指针、函数简要笔记

首先是关于指针定义
1、指针变量的定义

数据类型*  变量名;
1、在定义指定变量时,*起到标志性的作用,  除此情况以外,所有指针变量前面加*,表示指针指向的内存
2、*指针变量: 可以作左值也可以作右值
3、*指针变量:  本质就是解引用,访问从保存的地址开始,n个连续的内存
4、指针变量要与保存的地址类型匹配, 否则保存地址一点问题都没有,但是通过指针访问数据存在问题
5、不要出现野指针, 如果指针不知道指向哪里,可以指向NULL

编译时可以使用gdb调试

常用指令:
(1)编译   :  gcc   xx.c   -o   xx   -g

(2)执行:    gdb  ./xx

(3)gdb内部指令:
   r   :  运行
   b  行号/函数名:  打断点
   n    : 单步调试
   p   变量名:   打印变量数据
   q    :   退出gdb
   l    :查看代码

整形和字符型:

int main01()
{
	int a = 10;

	int*  p = &a;

	//int b = *p;
	
	*p = 200;
	
	printf("a: %d, *p= %d\n", a, *p);//输出a,*p指向a

	printf("&a: %p, p=%p\n", &a, p);//输出a地址,p中存放的时a的地址

	printf("&p: %p\n", &p);//输出指针p的地址

	return 0;
}   
int main02()
{
	char a = '1';

	char* p;

	p = &a;
	
	printf("a: %c, *p= %c\n", a, *p);

	printf("&a:%p, p=%p\n", &a, p);

	printf("&p: %p\n", &p);
	return 0;
}
int  main03()
{
	printf("sizeof(int*) = %ld\n", sizeof(int*));//64位机中长度都为8
	printf("sizeof(double*) = %ld\n", sizeof(double*));
	printf("sizeof(char*) = %ld\n", sizeof(char*));
	printf("sizeof(long*) = %ld\n", sizeof(long*));
	return 0;
}

数组:一维数组

(1)&a[0]  &a[1]  .... &a[i] ------》每个元素的起始地址

(2)a      a+1   ..... a+i   ------>每个元素的起始地址

 (3) &a    ---》表示数组的起始地址
     &a+1  --->偏移一个数组的大小

 (4)数组名的含义:  表示数组首元素的起始地址,并且是一个常量,不能被改变的

#include <stdio.h>

指针操作一维数组
//1、指针自增的方式访问数组每一个元素, 指针的指向发生改变
int main01()
{
	int a[5] = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值