首页 > 其他分享 >【C语言】指针(二)

【C语言】指针(二)

时间:2023-09-21 16:04:00浏览次数:33  
标签:arr int C语言 数组名 数组 sizeof 指针

在上一次的博客中我了解到了指针变量、const的作用、指针之间的运算、还有野指针的介绍以及assert断言

指针(一)

一、数组名的理解

见如下代码

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = &arr[0];

这里我们使用&arr[0]的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试:

#include <stdio.h>
int main()
{
 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
 printf("&arr[0] = %p\n", &arr[0]);
 printf("arr = %p\n", arr);
 return 0;
}

结果:

【C语言】指针(二)_指针

  • 我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址

紧接着我们再看下列代码

#include <stdio.h>
int main()
{
 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
 printf("%d\n", sizeof(arr));
 return 0;
}

该代码输出结果为40,如果arr是数组首元素的地址,那输出应该为4/8才对。

标签:arr,int,C语言,数组名,数组,sizeof,指针
From: https://blog.51cto.com/u_16189938/7554963

相关文章

  • C语言之函数篇
    前言函数知识。一起开始学习吧!@TOC一、认识函数函数?那不是数学中的知识吗?比如:指数函数,对数函数,幂函数等等,不会有小伙伴们以为牛牛要讲这些吧,很遗憾的告诉你们,这些都不是我们今天要讲的内容。牛牛是不会跑题的,牛牛今天主要介绍的是c语言中的函数。我们知道一个大的问题往往是可以......
  • c++中指针和引用的区别?
    1.指针是一个实体,需要分配内存空间,引用是一个变量的别名,不需要分配内存空间。2.引用在定义的时候必须进行初始化,并且不能改变。引用的值不能为NULL,指针在定义的时候不一定要初始化,并且指针所指向的空间是可变的,可以指向NULL。3.sizeof指针得到的是指针本事的大小,sizeof引用得到......
  • C语言 scanf gets fgets区别
    scanfscanf是一个格式化输入函数,用于从标准输入(通常是键盘)读取数据。chars[128];printf("pleaseinputstrings:\n");scanf("%s",s);printf("output:\n");printf("%s\n",s);注意scanf遇到空格、回车、Tab都会结束getsgets是一个不安全的......
  • C语言基础语法学习笔记(一)
    前言C语言是大学时期入门编程的第一门编程语言,遗憾的是当时没好好学,这么多年过去了也没有真正的学习和使用过这门优秀的编程语言,现如今正好有时间就打算从头开始好好学一下。学习的参考资料主要是《C语言程序设计》这本书以及benny老师的C语言精讲视频课。快速入门快速入门部分......
  • 初学C语言
    今天继续来分享我初学C语言的收获,与大家共享。作为一名小白,其实对于大多数知识都是全新的,所以我分享的收获更为基础,或者说是更为低级。今天主要分享的是数据类型:数据类型(代码)数据名称字节char字符数据类型1short短整型2int整型4long长整型4/8longlong更长的整型8float单精度浮点型......
  • 有关指针的一些代码定义
    定义一个指针int*p;p是指向整型的指针。由于没有初始化操作,p的指向是未知的,这是一个野指针。连续定义指针int*p1,*p2;p1和p2都是指针类型。如果写成int*p1,p2;p1是指针类型,p2是整型变量,不是指针。常量指针(指向常量的指针变量)constint*p;intconst*p;上面......
  • C语言实现猜数字小游戏
    @TOC学了也有几周c语言了,我们能不能用c语言实现一个小游戏玩一玩?今天牛牛给大家分享一个猜数字小游戏,希望大家能够喜欢。一、游戏设计思路1.菜单:设计一个”菜单“,让玩家可以选择”玩游戏“或者”不玩“。2.随机数:每次进入游戏,程序会自动生成一个”随机数“为目标数字(设置范围,......
  • C++中的类指针
    Studenta;s.setName("A");//Studeng*b=newStudent();Student*b; //声名指针b=newStudent(); //动态分配内存b->setName("B"); //访问成员函数分析定义类对象基本格式是:Studenta;在定义时就已经为a对象分配好了内存空间,且为内存栈;定义类指针......
  • 学习C语言的第六天
    先说下今天的心情吧,今天看的课感觉真的是开始上难度了,有一些逻辑复杂的地方要把视频反复看四五遍才能明白,不知道我这种笨蛋能不能学好C语言。。。还是对自己得有点信心,肯定能学好!下面是今天的内容啦!For循环之前不是很明白for循环和while循环的区别,这两天在chatgpt刨根问底了一下,总......
  • 七天学会C语言-第四天(数组)
    1.定义一维数组在C语言中,一维数组是具有相同数据类型的元素的有序集合。定义一维数组的基本语法如下:data_typearray_name[array_size];其中:data_type 是数组元素的数据类型,可以是整数、浮点数、字符等。array_name 是数组的名称,你可以自定义。array_size 是数组的大小,指定了数......