「C言語/標準ライブラリ/stdlib.h」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎calloc関数: リファクタリング
タグ: 2017年版ソースエディター
437 行
 
=== calloc関数 ===
calloc関数は、それぞれのサイズがsizeであり要素数nmembなオブジェクトの配列のための領域を割り当てます。領域はすべてのビットがゼロになるように初期化されます<ref name="jtc1-sc22-wg14-n1570-7.22.3.2">{{cite book
<ref>『JISX3010:2003』p.226「7.20.3.1 calloc関数」</ref>
| url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
| title = N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x
| page=347, §7.22.3.2 ''The calloc function''
| publisher = ISO/IEC}}</ref>。
 
; 形式
:<syntaxhighlight lang=c>
451 ⟶ 456行目:
:calloc関数とは、大きさがsizeであるオブジェクトのnmemb個の配列の領域を割り付ける関数である。
:その領域のすべてのビットは、0で初期化する。
; [https://paiza.io/projects/dlss4DLoMD7aes9tCQHXGQ?language=c 例] :<syntaxhighlight lang=c>
; 例
:<syntaxhighlight lang=c>
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
const int nmemb = 10;
{
int *p = (int *)calloc(nmemb, sizeof(int));
int i, *p;
const int nmemb=10;
 
if( (p=(int *)calloc(nmemb, sizeof(int)))== NULL) {
printf("領域の割り付けができませんでした。\n");
exit(EXIT_FAILURE);
}
 
printf("pの値:");
for (int i = 0; i < nmemb; i++i)
printf("%d ", p[i]);
 
free(p);
}
</syntaxhighlight>