
发表日期: 2022-09-01 14:36:50 浏览次数:153
上往建站提供网站建设,网站推广,网店设计,网站建设,企业网站,网站制作,网页设计,网站建设,企业网站制作,网页制作 高端定制网站建设,H5页面设计开发,微网站,微信运营,移动端设计开发,手机端网站,小程序,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设、网络推广、微信公众号代运营、商城小程序开发定制、网店设计等业务,专业团队服务,效果好。。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
五家渠网页设计-高端网站设计公司

数组赋值的区别:
char a[]="runoob"; // 这样赋值之后在结尾会自动加上''。
char a1[]={'r','u','n','o','o','b'}; // 这样赋值是整整好好的6个空间不会自动加上 <span class="marked"></span>。
所以比较的话,a 的长度比 a1 的要大。
瓜皮
瓜皮
410***702@qq.com
4年前 (2019-02-10)
wshisuifeng
wsh***ifeng@outlook.com
12
数组初始化技巧: 将元素全部置零 {0}。
#include <stdio.h>
int main()
{
double arr[10] = {0};
for(int i=0; i<sizeof(arr)/sizeof(double); i++)
printf("%d ", arr[i]);
printf(" ");
int a[3][4] = {0};
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
printf("%d ", a[i][j]);
printf(" ");
}
return 0;
}
wshisuifeng
wshisuifeng
wsh***ifeng@outlook.com
3年前 (2019-05-28)
C渣渣
298***3628@qq.com
12
可将枚举、数组和结构体结合起来使用,例如输入5个人的姓名、学号、成绩,但是光靠记忆是记不住哪个人的成绩是数组中第几个元素:
struct Student
{
char name;
long num;
double grade;
} ST;
struct Student ST = {{"zhangsan", 0001, 86},
{"lisi", 0002, 72.5},
{"wangwu", 0003, 60},
{"chenliu", 0004, 23},
{"cuihua", 0005, 92}};
enum ST_INDEX
{
zhangsan = 0,
lisi,
wangwu,
chenliu,
cuihua,
}
这样通过索引枚举中各个人的名字作为数组中的元素位置即可快速查询某个人的成绩等信息。
C渣渣
C渣渣
298***3628@qq.com
3年前 (2019-12-05)
sixwolves
liu***996@163.com
28
int a[10];
数组名是指向数组首个元素的指针常量,*a==a[0],*(a+1)==a[1],其类型应该为指向int类型的指针:
int *;
对数组名取地址:&a,得到的应该是整个数组的地址。这时可以认为a是整个数组的变量名,对变量名进行取地址操作:&,会得到该变量的地址;
操作:(&a+1)得到的是增大整个数组内存大小的地址:增大4*10。
sixwolves
sixwolves
liu***996@163.com
3年前 (2020-01-23)
五家渠网页设计-高端网站设计公司
上往建站提供微信小程序+公众号商城+企业网站建设一站式微信网站商城营销系统,微信小程序是一种依附于微信体内即点即用,无需下载安装即可使用的轻应用,它开启了移动端“触手可及”的梦想,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设、微信公众号代运营、商城小程序开发定制、网店设计等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
服务热线
顶部
备案号: 苏ICP备2021016738号-6
CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.club 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
全国服务热线:400-111-6878
字符串指针:
得出结论字符数组的 首地址可以用 arrgs ,&arrgs,来表示并且它们相等,
但是指针&str和str是不同的,当遇到字符串指针时候要注意处理方式;
HBR1
238***9419@qq.com
喵帕斯
115***2452@qq.com
一个小知识点:
在我们没有明确数组的元素个数时,在程序中想知道数组单元个数可以使用 sizeof(a)/sizeof(a[0]), sizeof(a) 是得到数组 a 的大小,sizeof(a[0]) 是得到数组 a 中单个元素的大小(因此可以不必要是a[0],a[i]都行),eg:
#include<stdio.h>int main(int argc,char *grgv[]){ int a[]={1,2,3,4,5}; int b; b=sizeof(a)/sizeof(a[0]); printf("数组元素个数为:%d",b); return 0; }喵帕斯
115***2452@qq.com
流浪天涯
223***9389@qq.com
数组是一种一次申请多个变量的方法,数组的使用让我们可以在程序中保留多个变量的值,进行处理,例如给定n个学生的成绩,要求有多少学生超过了平均分,代码如下:
#include <stdio.h> //导如输入输出头文件int main(){ //主函数 int cj[100]={0};//定义数组 int n; int count=0;//定义计数器,统计有多少人达到平均分 scanf("%d",&n); int i=0; //读入数据 for(i=0;i<n;i++){ scanf("%d",&cj[i]); } //对数据进行求和 double sum=0; for(i=0;i<n;i++){ sum+=cj[i]; } //求平均分 double arg=sum/n; //判断有多少人达到平均分; for(i=0;i<n;i++){ if(cj[i]>arg){ count++; } } //输出平均分和人数 printf("平均分为:%0.2f 超过平均分的人有:%d个 ",arg,count); return 0;}流浪天涯
223***9389@qq.com
沂圆束潇
953***815@qq.com
#include <stdio.h>int main(){ int a[2] = {1,2}; printf("a = %d ",a[0]); printf("*(a+0) = %d ",*(a + 0)); printf("a[1] = %d ",a[1]); printf("*a = %d ",*a); printf("*(a+1) = %d ",*(a + 1)); printf(" "); printf("a 的地址:%p ",a); printf("(a+0)的地址:%p ",(a + 0)); printf("(a+1)的地址:%p ",(a + 1)); // %p 读入一个指针 printf(" "); return 0;}输出结果:
事实上 a[0] 、a[1]...a[i] 代表的都是值,a、(a+0)、(a+1)、(a+i) 代表的是地址;另外这里的 a 代表整个数组的首地址,相当于 a[0] 的地址,而这里 (a+1) 就代表的是 a[0+1] 的地址。
正如文章中提到的:所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素,即是说 (a+i) 就代表的是 a[0+i] 的地址。
沂圆束潇
953***815@qq.com
布克F91
335***443@qq.com
对于数组的初始化需要注意以下几点:
1) 可以只给部分元素赋值,当 { } 中值的个数少于元素个数时,只给前面部分元素赋值。例如:
int a[10]={12, 19, 22 , 993, 344};表示只给 a[0]~a[4] 5 个元素赋值,而后面 5 个元素自动初始化为 0。
当赋值的元素少于数组总体元素的时候,不同类型剩余的元素自动初始化值说明如下:
我们可以通过下面的形式将数组的所有元素初始化为 0:
int nums[10] = {0};char str[10] = {0};float scores[10] = {0.0};由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。
2) 只能给元素逐个赋值,不能给数组整体赋值。例如给 10 个元素全部赋值为 1,只能写作:
int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};而不能写作:
布克F91
335***443@qq.com
对于 short、int、long,就是整数 0;
对于 char,就是字符 '';
对于 float、double,就是小数 0.0。
Jiangang
121***5109@qq.com
指针与数组名的区别
指针:也是一个变量,存储的数据是地址。
数组名:代表的是该数组最开始的一个元素的地址。
区别:指针是一个变量,可以进行数值运算。数组名不是变量,不可以进行数值运算。
Jiangang
121***5109@qq.com
对数组元素 a[i]的引用也可以写成*(a+i)这种形式。
赋值语句 p=&a[0] 也可以写成下列形式: p=a。
p 是个指针,p[i]与*(p+i)是等价的。
chrislee
cod***hrislee@163.com
数组和指针的关系
// 一个整型数组的指针,长度为 len, 得到数组中的最小值和最大值 ———— 从外部传入两个指针,从而将所求的两个结果保存带出来,得到多个返回值。void minMax(int a[], int len, int *min, int *max) { int i; *min = *max = a[0]; //假定最大值 最小值相等 为a[0] for(i= 1; i < len, i++) { if( a[i] < *min) { *min = a[i]; } if(a[i] > *max) { *max = a[i]; } }}int a[] = {1, 2, 3, 4, 5, 7, 8, 9, 15, 18, 25, 33};int min, max;minMax(a, sizeof(a)/ sizeof(a[0]), &min , &max );printf( "min = %d, max = %d ", min, max);数组变量是特殊的指针,数组变量本身表达地址,int a[10]; int *p =a;
数组变量无需用取址符& ;
数组的元素表达的是变量,需要用&取地址,如 m = &a[0];
[]运算符可以对数组做,也可以对指针做p[0] == a[0];*运算符可以对指针做,也可以对数组做*a = 25, *a可以得到或者修改数组首个元素的值;实际上数组是 const 的指针,所以不能被赋值。 如果
int a[] = {1,2,5,7};int b[],由于int b[]实质上等价于 <===> int const *b; b 是一个常数,不能被改变,初始化出来代表这个数组就不能再改变。 b = a; (错误) 数组变量之间是不可以这样互相赋值的。 而 int *q = a; 这样是可以的。函数的参数中 数组类型参数
int a[]本质是指针 可以直接换成int *a;可以用数组的运算符
[]进行运算,而且可以通过a[0]就直接修改了外面的数组元素;size of(a) == sizeof(int *)所以函数内部没法用sizeof得到数组的长度 只能传一个len;