朱有鹏老师课程,数组,指针与sizeof运算符的总结

sizeof是c语言中的一个运算符(像+、-、*、/),而不是一个函数。
sizeof用来返回()中变量或者数据类型占用的内存字节数

char str[]=“hello”;
sizeof(str);输出6,数组str总共包括了5个字符和一个’\0’.总共6个字节
sizeof(str[0]);输出1,输出了数组第一个元素所占用的字节数
strlen(str);输出5,strlen只会计算数组中字符所占的字节数,当找到‘\0’时,就停止了计算。

char str[] =“hello”;
char *p = str;
sizeof(p);输出4,相当于在计算指针变量类型char *所占用的字节数。
sizeof(*p);输出1,p中存放的是数组第一个元素的第一个地址。这么写相当于计算数组第一个元素占用的字节数。
strlen(p);输出5,相当于strlen(str)

int n=10;
sizeof(n);输出4,相当与sizeof(int),sizeof测试一个变量本省和测试这个变量的类型,两者的结果是一样的。

int n[100];
sizeof(n);输出400,100*sizeof(int)=400;

用#define和typedef两种形式替换char *的区别。
#define dpChar char *;
typedef char * tpChar;
dpChar p1,p2;//相当于char *p1,p2;
tpChar p3,p4;//相当于char *p3;char *p4;

计算数组元素个数的方法
int a[100];
int b = sizeof(a)/sizeof(a[0]);

子函数中用数组传参的问题

void func(int a[])
{
	printf(“数组大小=%d\n”,sizeof(a));
}
int main(void)
{
	int a[20];
	func(a);
	return 0;
}

这样的子函数,得到的结果,是4。
(1)函数传参,形参可以是数组。
(2)函数的形参为数组时,实际传递的不是整个数组,而是数组的首元素首地址。相当于传递的是指针。形参写成 int a[];和int *a;没有区别。
即数组在传参后,数组的大小就丢了,只剩下数组首元素首地址了。

如果要向子函数中传递一个数组(包括首地址和数组元素个数)
子函数的形参需要写成:
void func(int *a,int num)
引用时,func(a,sizeof(a))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值