A. 关于c语言数组的传递
main()
{
int a[10];
read(a, 10);
wr(a, 10);
}
B. C语言函数间传输二维数组的问题。
# include <stdio.h>
int score[30][2],p,sum=0;
void Append();
void Toave(int score[]);
void SortScore(int number[],int score[]);
void SortNumber(int number[],int score[]);
void Sear(int number[],int score[]);
void Analysis(int number[],int score[]);
void List(int number[],int score[]);
int main()
{
int a;
while(1){
printf("1. Append record\n");
printf("2. Caculate total and average score of course\n");
printf("3. Sort in descending order by score\n");
printf("4. Sort in ascending order by number\n");
printf("5. Search by number\n");
printf("6. Statistic analysis\n");
printf("7. List record\n");
printf("0. Exit\n");
printf("Please enter your choice:");
scanf("%d",&a);
if(a==1)
{
Append();
}
if(a==2)
{
Toave(score);
}
if(a==3)
{
SortScore(score);
}
if(a==4)
{
SortNumber(score);
}
if(a==5)
{
Sear(score);
}
if(a==6)
{
Analysis(score);
}
if(a==7)
{
List(score);
}
if(a==0)
{
break;
}
}
return 0;
}
void Append()
{
int i;
printf("Please input the number of the students:");
scanf("%d",&p);
printf("Please input the ID and score of the students:\n");
for(i=0;i<p;i++)
{
scanf("%d %d",&score[i][i/2+1]; //i/2+1是什么意思
}
}
void Toave() //这里不要参数,因为score[30][2]是全局变量。
{
int i;
for(i=0;i<p;i++)
{
sum=sum+score[i][2]; //这个错误,第二维数组是0,1,没有2哦
}
printf("Total score is %d.\n",sum);
printf("Average score is %d.\n",sum/p);
}
C. C语言传字符串数组
题目不够详细啊。给你解释下什么叫字符串数组吧
字符串数组就是一个数组,他的每一个元素都是一个字符串。
在c语言中字符串是以\0结尾的一串字符,如“abcd1234\0”
字符串数组str[2]={"abc\0","123\0"}
\0是结束符。字符串数组里的字符长度都为3
打印的时候只显示abc,\0不显示
D. 单片机C语言数组传送,
加按键抬起检测就可以了
if(temp!=0xf0)
{
temp=P3;
while(temp!=0x0f)//按键不抬起,一直读P3
{
temp=P3;
temp=temp&0x0f;
}
switch(temp)
{
case 0xee:..........
我觉得还可以更简单 while(P3!=0xfe);
E. c语言一维数组传递
输入具体分数的那个函数里面scanf里面有\n,你在测试的时候,输入一个份数后回车,它还要继续执行for循环来判断,所以不会立即产生结果,你在测试的时候,先输入一个份数后回车换行,你再回车一下,看能不能输出结果。这是我个人的理解,没有实际操作,可能理解错误
F. 单片机里的C语言函数间的数组传递
sizeof(Logo) 计算出来的数值是字符数组Logo的长度加一(包括了字符串的结束字符'\0')之后减一就好理解了,即是计算字符数组Logo的长度。
另在这程序里sizeof(Logo) - 1 可以用函数strlen(Logo)代替 (需提示的是函数strlen是遇到'\0'结束的,因为这里你的Logo是加上code修饰的不用担心会修改数组的某一内容为'\0'的情况,如在其他的地方用的需留意,免得会出现bug)
再提醒下sizeof(Logo) - 1 和 strlen(Logo)的一个重要的区别就是sizeof(Logo)是在编译时就计算出数值;而strlen(Logo)是在运行时才调用函数来计算长度的,每用到一次都要调用一次函数,用sizeof(Logo)相对于strlen(Logo)可以节省程序执行的时间
G. c语言中数组参数传递
在vs2010中楼主的程序传参没有出现问题,注意输出如果用printf的话,格式应为printf("%f",a[1][1]);
附测试代码如下:
#define N 3
double Determinant(double a[][N],int n)
{
int i,j;
int R = 0;
printf("size a is %d\n",sizeof(a));//你会发现传过来的只是其中一个一维数组a[][3],但是由于C的灵活性,可以通过指针访问的方式来访问其他内容。
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
printf("i is %d,j is %d,a is %f\n",i,j,a[i][j]);
}
}
return R;
}
int main(int argc, _TCHAR* argv[])
{
double a[3][3];
int i,j,k;
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
a[i][j] = (i+1)*j;
}
}
k = Determinant(a,3);
getchar();
return 0;
}
H. c语言数组如何在函数中传递不要指针传递
数组只能通过指针传递,不能通过值传递。
数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.
1. 数组参数就是指向第一个元素的指针: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接声明为指针: #include <stdio.h>
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形参中指定维数也不起作用: #include <stdio.h>
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指针, 其值就有被修改的可能: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}
5. 如果是字符数组, 它自己能判断数组尾界: #include <stdio.h>
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
I. 请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:
#include <stdio.h>
voidpr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
(9)c语言传输协议数组扩展阅读:
注意事项
非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
与
int main(int argc,char** argv)
{
/* code here */
}
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。
J. c语言数组传递
char *s1,*s2;这里的s1,s2就是上面的substr(s1,s2)里的s1,s2啊,就是定义它的类型,即定义为指向char型的指针变量!
substr(*str1,*str2));这里函数调用不对吧,传过去数组名就可以了,即substr(str1,str2));试试看吧