A. c語言怎麼將數組作為函數參數傳入
一維數組的元素作為函數實參,與同類型的簡單變數作為實參一樣,是單向的值傳遞,即數組元素的值傳給形參,從而形參是改變不影響實參
數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組
修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。
#include<stdio.h>
//數組作為函數參數,可以省略元素個數
//數組作為函數參數,傳遞是整個數組的地址,修改了函數形參數組元素的值,會影響到外面的實參數組
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
輸出結果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
B. C語言 如何把一個變數值賦給一個數組。
呵呵.你可以使用一個函數名字叫sprintf
下面是我給你寫的詳細代碼你可以參考下
#include
<stdio.h>
int
main()
{
int
a=200;
char
im[]={"hello"};
sprintf(im,"%d",a);
//第一個參數是接受復制的char變數中間是格式化如果換成%c就是按照字元賦值.最後是賦值變數
printf("%s\n",im);
}
C. c語言中可不可以用變數定義數組的個數;
c語言中不可以用變數定義數組的個數。
可以使用mallo函數
mallo函數返回的實際是一個無類型指針,必須在其前面加上指針類型強制轉換才可以使用;
指針自身=(指針類型*)malloc(sizeof(指針類型)*數據數量);
int*p=NULL;
intn=10;
p=(int*)malloc(sizeof(int)*n);
(3)變數為數組的函數c語言擴展閱讀
mallo函數使用注意事項
調用malloc函數時,它沿連接表尋找一個大到足以滿足用戶請求所需要的內存塊。然後,將該內存塊一分為二(一塊的大小與用戶請求的大小相等,另一塊的大小就是剩下的位元組)。接下來,將分配給用戶的那塊內存傳給用戶,並將剩下的那塊(如果有的話)返回到連接表上。
調用free函數時,它將用戶釋放的內存塊連接到空閑鏈上。到最後,空閑鏈會被切成很多的小內存片段,如果這時用戶申請一個大的內存片段,那麼空閑鏈上可能沒有可以滿足用戶要求的片段了。
D. C語言 如何把一個變數值賦給一個數組
這個"如何"其實沒有標准答案,因為int變數和該數組沒啥關系,你想知道如何必須首先定義放的規則
E. C語言 如何把一個變數值賦給一個數組。
1.整型值賦值給整型數組:
int value=2;//定義一個變數,並賦值
int array[10];//定義一個數組
array[0]=value;//將變數值賦值給該數組。
2.整型值賦值給字元數組:
int value=3;
char str[10];
str[0]=value+'0';//賦值給單個字元
itoa(value,str,10);//數字轉字元串函數itoa,10代表十進制。要包含頭文件<stdio.h>
3.字元賦值給整型數組
char ch;
int array[10];
array[0]=atoi(ch);
僅舉上例。
F. c語言的函數定義時,變數為數組與變數為一個元素,有什麼區別
變數為數組,則調用者在調用時,傳遞的是一個地址值(數組名就是個地址),這好比對方告訴你他家的地址,通過這個地址,你可以訪問他家中的任何人、物,你在這個地址中的一舉一動都在影響這個家裡的變化。
變數為元素,則調用者在調用時,傳遞的是一個數的數值。這好比,對方只告訴了你一個人名,你拿到這個人名,無論怎麼修改,也只是改你這里的,人家還是叫人家的名字!
G. c語言的函數定義時,變數為數組與變數為一個元素,有什麼區別
我覺得你在看引用調用和值調用那一部分。
首先,其實對於int
a[10],就是在內存中開辟一段存儲空間存放十個整型元素。你要明白a不是一個變數,而是一個常量地址,什麼地址呢?就是指向這10個元素空間的首地址(第一個元素的地址)。你可以給a賦個值試一試,編譯不會通過,因為a是個常量,不是變數。
而對於變數,他就是代表一個值,可以對他進行任意賦值。
如果將數組傳遞給函數,因為數組名a是常量地址,所以函數形參有了主函數數組的地址,所以被調函數可以通過地址,修改主函數中數組的元素值。
明白嗎?
H. c語言函數怎麼調用數組部分
一、數組可定義為全局變數,函數直接調用。
二、數組可定義為局部變數,再通過參數傳遞到函數中調用(實參傳數組名,表示數組首地址,也可通過指針或數組名+數字來傳遞數組局部地址)。
三、main函數想要調用函數返回的數組,可用static定義靜態變數或malloc定義動態數組(字元串常量也可返回使用,但局部變數,在函數調用結束會被釋放,不能作為返回地址使用)。
下面是演示代碼:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char str1[]="我是全局變數數組";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函數的局部數組變數";
str3=fun0(str2);
printf("str3:%s,fun函數調用結束,我的地址依然可以使用 ",str3);
str4=fun1();
printf("str4:%s,fun函數調用結束,我的地址依然可以使用 ",str4);
str5=fun2();
printf("str5:%s,fun函數調用結束,函數結束不會自動釋放 ",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函數申明的靜態數組變數";
printf("str1:%s,fun函數可以直接調用 ",str1);
printf("str2:%s,fun函數通過參數將我的地址傳進來 ",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函數的字元串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="這是一個臨時數組,之後用於給mallc申請的地址傳值,傳遞內容為:(我是fun函數通過mallic申請的數組)";
char *str5=NULL;
len=strlen(sTemp+63);
str5=(char *)malloc(sizeof(char)*len+1);
if(!str5)return NULL;
strcpy(str5,sTemp+63);
str5[len-2]=0;
return str5;
}
I. C語言定義一個函數如果含有數組
void min(int a[],int x) //int x是用來標記傳過來的數組的長度(即a數組指向的那個數組的長度)。
因為你在函數中計算的時候,a只能當做一個指針來用,沒有具體的長度,而且你是int 型的,所以沒有標准庫函數來求你需要計算的數組的長度,所以你就沒法計算。
void min(int a[],int b[])這樣計算沒錯誤,但是在計算的時候,你要知道a所指向的數組的長度和b所指向的長度,例如下面的例子:
a數組中有10個數,b數組中有2個數,a數組的大小是40個位元組,而指向他的c數組大小隻有4個位元組,所以當你運算的時候,你要知道c指向的a數組的大小,同理,d也是一樣。
#include"stdio.h"
#include"string.h"
void min(int c[],int d[])
{
int i,j=0;
int e[100]={0};
printf("c=%d
",sizeof(c));
for(i=0;i<10;i++)//a數組中有10個數
e[j++]=c[i];
for(i=0;i<2;i++)//b數組中有2個數
e[j++]=d[i];
for(i=0;e[i];i++)
printf("%d ",e[i]);
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[2]={3,4};
printf("a=%d
",sizeof(a));
min(a,b);
}
J. C語言數組變數作為函數參數
將數組傳遞給函數後,數組就會退化為指針
voidfun(intx,intpp[],int*n)
voidfun(intx,int*pp,int*n)
//這兩種寫法是等價的
pp[j++]=j;//這句寫錯了
//要保存到pp里的是能整除的整數,而不是計數器j,如果這么寫,那麼pp的值肯定是{0,1,2,3,4,5,...}
//應該改成
pp[j++]=l;//L才是被整除的整數,要保存的是這個
*n=j;//n作為一個指針,負責傳出得到的數字的數量,j是計數器,當所有的計算完畢後,j的值自然是這些數字的數量