Next: Unions , Previous: Overlaying Structures , Up: Structures   [ Contents ][ Index ]

15.13 Structure Assignment

Assignment operating on a structure type copies the structure. The left and right operands must have the same type. Here is an example:

Notionally, assignment on a structure type works by copying each of the fields. Thus, if any of the fields has the const qualifier, that structure type does not allow assignment:

See Assignment Expressions .

When a structure type has a field which is an array, as here,

structure assigment such as r1 = r2 copies array fields’ contents just as it copies all the other fields.

This is the only way in C that you can operate on the whole contents of a array with one operation: when the array is contained in a struct . You can’t copy the contents of the data field as an array, because

would convert the array objects (as always) to pointers to the zeroth elements of the arrays (of type struct record * ), and the assignment would be invalid because the left operand is not an lvalue.

C Functions

C structures, c reference, c structures (structs).

Structures (also called structs) are a way to group several related variables into one place. Each variable in the structure is known as a member of the structure.

Unlike an array , a structure can contain many different data types (int, float, char, etc.).

Create a Structure

You can create a structure by using the struct keyword and declare each of its members inside curly braces:

To access the structure, you must create a variable of it.

Use the struct keyword inside the main() method, followed by the name of the structure and then the name of the structure variable:

Create a struct variable with the name "s1":

Access Structure Members

To access members of a structure, use the dot syntax ( . ):

Now you can easily create multiple structure variables with different values, using just one structure:

What About Strings in Structures?

Remember that strings in C are actually an array of characters, and unfortunately, you can't assign a value to an array like this:

An error will occur:

However, there is a solution for this! You can use the strcpy() function and assign the value to s1.myString , like this:

Simpler Syntax

You can also assign values to members of a structure variable at declaration time, in a single line.

Just insert the values in a comma-separated list inside curly braces {} . Note that you don't have to use the strcpy() function for string values with this technique:

Note: The order of the inserted values must match the order of the variable types declared in the structure (13 for int, 'B' for char, etc).

Copy Structures

You can also assign one structure to another.

In the following example, the values of s1 are copied to s2:

Modify Values

If you want to change/modify a value, you can use the dot syntax ( . ).

And to modify a string value, the strcpy() function is useful again:

Modifying values are especially useful when you copy structure values:

Ok, so, how are structures useful?

Imagine you have to write a program to store different information about Cars, such as brand, model, and year. What's great about structures is that you can create a single "Car template" and use it for every cars you make. See below for a real life example.

Real-Life Example

Use a structure to store different information about Cars:

C Exercises

Test yourself with exercises.

Fill in the missing part to create a Car structure:

Start the Exercise

Get Certified

COLOR PICKER

colorpicker

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: [email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail: [email protected]

Top Tutorials

Top references, top examples, get certified.

C Programming Tutorial

  • Array of Structures in C

Last updated on July 27, 2020

Declaring an array of structure is same as declaring an array of fundamental types. Since an array is a collection of elements of the same type. In an array of structures, each element of an array is of the structure type.

Let's take an example:

struct car { char make[20]; char model[30]; int year; };

Here is how we can declare an array of structure car .

struct assignment array

Here arr_car is an array of 10 elements where each element is of type struct car . We can use arr_car to store 10 structure variables of type struct car . To access individual elements we will use subscript notation ( [] ) and to access the members of each element we will use dot ( . ) operator as usual.

arr_stu[0] : points to the 0th element of the array. arr_stu[1] : points to the 1st element of the array.

and so on. Similarly,

arr_stu[0].name : refers to the name member of the 0th element of the array. arr_stu[0].roll_no : refers to the roll_no member of the 0th element of the array. arr_stu[0].marks : refers to the marks member of the 0th element of the array.

Recall that the precedence of [] array subscript and dot( . ) operator is same and they evaluates from left to right. Therefore in the above expression first array subscript( [] ) is applied followed by dot ( . ) operator. The array subscript ( [] ) and dot( . ) operator is same and they evaluates from left to right. Therefore in the above expression first [] array subscript is applied followed by dot ( . ) operator.

Let's rewrite the program we used in the last chapter as an introduction to structures.

#include<stdio.h> #include<string.h> #define MAX 2 struct student { char name[20]; int roll_no; float marks; }; int main() { struct student arr_student[MAX]; int i; for(i = 0; i < MAX; i++ ) { printf("\nEnter details of student %d\n\n", i+1); printf("Enter name: "); scanf("%s", arr_student[i].name); printf("Enter roll no: "); scanf("%d", &arr_student[i].roll_no); printf("Enter marks: "); scanf("%f", &arr_student[i].marks); } printf("\n"); printf("Name\tRoll no\tMarks\n"); for(i = 0; i < MAX; i++ ) { printf("%s\t%d\t%.2f\n", arr_student[i].name, arr_student[i].roll_no, arr_student[i].marks); } // signal to operating system program ran fine return 0; }

Expected Output:

Enter details of student 1 Enter name: Jim Enter roll no: 1 Enter marks: 44 Enter details of student 2 Enter name: Tim Enter roll no: 2 Enter marks: 76 Name Roll no Marks Jim 1 44.00 Tim 2 76.00

How it works:

In lines 5-10, we have declared a structure called the student .

In line 14, we have declared an array of structures of type struct student whose size is controlled by symbolic constant MAX . If you want to increase/decrease the size of the array just change the value of the symbolic constant and our program will adapt to the new size.

In line 17-29, the first for loop is used to enter the details of the student.

In line 36-40, the second for loop prints all the details of the student in tabular form.

Initializing Array of Structures #

We can also initialize the array of structures using the same syntax as that for initializing arrays. Let's take an example:

struct car { char make[20]; char model[30]; int year; }; struct car arr_car[2] = { {"Audi", "TT", 2016}, {"Bentley", "Azure", 2002} };

Load Comments

  • Intro to C Programming
  • Installing Code Blocks
  • Creating and Running The First C Program
  • Basic Elements of a C Program
  • Keywords and Identifiers
  • Data Types in C
  • Constants in C
  • Variables in C
  • Input and Output in C
  • Formatted Input and Output in C
  • Arithmetic Operators in C
  • Operator Precedence and Associativity in C
  • Assignment Operator in C
  • Increment and Decrement Operators in C
  • Relational Operators in C
  • Logical Operators in C
  • Conditional Operator, Comma operator and sizeof() operator in C
  • Implicit Type Conversion in C
  • Explicit Type Conversion in C
  • if-else statements in C
  • The while loop in C
  • The do while loop in C
  • The for loop in C
  • The Infinite Loop in C
  • The break and continue statement in C
  • The Switch statement in C
  • Function basics in C
  • The return statement in C
  • Actual and Formal arguments in C
  • Local, Global and Static variables in C
  • Recursive Function in C
  • One dimensional Array in C
  • One Dimensional Array and Function in C
  • Two Dimensional Array in C
  • Pointer Basics in C
  • Pointer Arithmetic in C
  • Pointers and 1-D arrays
  • Pointers and 2-D arrays
  • Call by Value and Call by Reference in C
  • Returning more than one value from function in C
  • Returning a Pointer from a Function in C
  • Passing 1-D Array to a Function in C
  • Passing 2-D Array to a Function in C
  • Array of Pointers in C
  • Void Pointers in C
  • The malloc() Function in C
  • The calloc() Function in C
  • The realloc() Function in C
  • String Basics in C
  • The strlen() Function in C
  • The strcmp() Function in C
  • The strcpy() Function in C
  • The strcat() Function in C
  • Character Array and Character Pointer in C
  • Array of Strings in C
  • Array of Pointers to Strings in C
  • The sprintf() Function in C
  • The sscanf() Function in C
  • Structure Basics in C
  • Array as Member of Structure in C
  • Nested Structures in C
  • Pointer to a Structure in C
  • Pointers as Structure Member in C
  • Structures and Functions in C
  • Union Basics in C
  • typedef statement in C
  • Basics of File Handling in C
  • fputc() Function in C
  • fgetc() Function in C
  • fputs() Function in C
  • fgets() Function in C
  • fprintf() Function in C
  • fscanf() Function in C
  • fwrite() Function in C
  • fread() Function in C

Recent Posts

  • Machine Learning Experts You Should Be Following Online
  • 4 Ways to Prepare for the AP Computer Science A Exam
  • Finance Assignment Online Help for the Busy and Tired Students: Get Help from Experts
  • Top 9 Machine Learning Algorithms for Data Scientists
  • Data Science Learning Path or Steps to become a data scientist Final
  • Enable Edit Button in Shutter In Linux Mint 19 and Ubuntu 18.04
  • Python 3 time module
  • Pygments Tutorial
  • How to use Virtualenv?
  • Installing MySQL (Windows, Linux and Mac)
  • What is if __name__ == '__main__' in Python ?
  • Installing GoAccess (A Real-time web log analyzer)
  • Installing Isso
  • How to Create Array of Structs in C

How to Create an Array of Structs in C Using Static Array Initialization

How to create an array of structs in c using the malloc() function.

How to Create Array of Structs in C

Creating arrays of structures in C is a fundamental aspect of programming, providing a powerful mechanism for organizing and managing complex data. In this article, we explore various methods to achieve this task, catering to different needs and scenarios.

Whether opting for the simplicity of static array initialization or the flexibility of dynamic memory allocation with the malloc() function, each approach brings its own advantages to the table.

Understanding these methods equips programmers with the knowledge to handle data efficiently and maintain code clarity in C applications.

Before diving into the array aspect, let’s review the basics of structs. A struct is a composite data type that groups variables of different data types under a single name.

This allows you to organize related information into a cohesive unit. Let’s consider a simple example using a structure named Student with integer, character array, and float members:

An array of structures in C is a data structure that allows you to store multiple instances of a structure in a contiguous block of memory. Each element of the array is a structure, and each structure contains multiple fields (or members).

This arrangement enables you to organize and manage related data in a more structured and efficient manner.

To create an array of structs, you can use static array initialization. This involves declaring an array of structs and initializing its elements at the time of declaration.

Let’s use the Student struct from the previous example:

Here, the studentRecord is an array of 5 elements where each element is of type struct Student . The individual elements are accessed using the index notation ( [] ), and members are accessed using the dot . operator.

The studentRecord[0] points to the 0th element of the array, and the studentRecord[1] points to the first element of the array.

  • The studentRecord[0].rollNumber refers to the rollNumber member of the 0th element of the array.
  • The studentRecord[0].studentName refers to the studentName member of the 0th element of the array.
  • The studentRecord[0].percentage refers to the percentage member of the 0th element of the array.

The complete program to declare an array of the struct in C is as follows.

In the C program above, we create an array of structs to represent student records.

The code begins by including the standard input/output library ( stdio.h ). Next, a structure named Student is defined, containing three members: rollNumber (integer), studentName (character array of size 20), and percentage (float).

Inside the main() function, an array of structs named studentRecord is declared and initialized with five elements. Each element corresponds to a student record and includes the student’s roll number, name, and percentage.

This initialization is done using curly braces and providing values for each member of the struct.

Subsequently, a for loop is utilized to iterate through each element of the studentRecord array. Inside the loop, the printf function is used to display the student information.

The %d placeholder is used to print the integer rollNumber , %s for the string studentName , and %.2f for the floating-point percentage . The .2f format specifier ensures that the percentage is displayed with two decimal places.

Finally, the program returns 0, indicating successful execution. The output of the program should be a clear and formatted display of the student information, presenting the roll number, name, and percentage for each student in the array.

Code Output:

Array of Structs in C - Output 1

This output demonstrates the successful creation and display of an array of structs in C using static array initialization. Each student’s information is presented clearly, showcasing the organization and accessibility of data through the combination of structures and arrays.

While static array initialization is convenient, it may not always provide the flexibility needed in certain scenarios.

Dynamic memory allocation, achieved through the malloc() function, allows us to create an array of structs with a size determined at runtime. This approach is particularly useful when dealing with variable-sized datasets.

The malloc() function is used to dynamically allocate memory. Its syntax is as follows:

Here, ptrVariable is a pointer variable of the specified cast type, and byte-size is the amount of memory to allocate in bytes. In the case of creating an array of structs, we determine the size by multiplying the number of elements by the size of each struct using sizeof .

Let’s consider an example program where we create an array of student records using dynamic memory allocation:

In this C program, dynamic memory allocation is utilized to create an array of structs representing student records. The program begins by including the necessary libraries, stdio.h for standard input/output and stdlib.h for dynamic memory allocation functions.

A structure named Student is defined to hold information about each student, including their roll number, name, and percentage. Inside the main() function, an integer variable numStudents is declared and set to 3, representing the desired number of students.

Next, a pointer to a struct Student named studentRecord is declared.

The malloc() function is then used to dynamically allocate memory for an array of structs based on the product of numStudents and sizeof(struct Student) . The cast (struct Student*) is applied to the result of malloc() to ensure that the allocated memory is treated as an array of struct Student .

A for loop is employed to iterate through each student in the dynamically allocated array. Inside the loop, the program prompts the user to input information for each student using printf and scanf functions.

The entered data is stored in the corresponding members of the studentRecord array.

After collecting the input, another for loop is used to display the student information, utilizing printf to format and print each student’s roll number, name, and percentage. The .2f format specifier ensures that the percentage is displayed with two decimal places.

Finally, the free() function is called to release the dynamically allocated memory, preventing memory leaks. The program returns 0, indicating successful execution.

Array of Structs in C - Output 2

This output demonstrates the dynamic creation of an array of structs using the malloc() function. Users can input information for the specified number of students, and the program displays the entered data.

The dynamic allocation allows for a variable number of elements and provides more flexibility in memory management.

The ability to create arrays of structs in C is an essential skill for developers working with diverse datasets. The static approach provides straightforward initialization and ease of use, while dynamic memory allocation offers flexibility when dealing with varying data sizes.

The examples provided showcase practical implementations of both methods, highlighting their strengths and use cases. As you delve into struct arrays in C, consider the specific requirements of your program and choose the method that best aligns with your coding objectives.

With these tools at your disposal, you’ll be well-equipped to navigate the complexities of data organization in C programming.

Related Article - C Array

  • How to Copy Char Array in C
  • How to Dynamically Allocate an Array in C
  • How to Clear Char Array in C
  • Array of Strings in C
  • How to Initialize Char Array in C
  • How to Print Char Array in C

Related Article - C Struct

  • Bit Field in C
  • Difference Between Struct and Typedef Struct in C
  • How to Use struct Alignment and Padding in C
  • How to Initialize Array of Structs in C
  • How to Return a Struct From Function in C
  • How to Allocate Struct Memory With malloc in C

cppreference.com

Struct and union initialization.

(C11)
Miscellaneous

When initializing an object of struct or union type, the initializer must be a non-empty, (until C23) brace-enclosed, comma-separated list of initializers for the members:

expression (1) (until C99)
designator(optional) expression (2) (since C99)
(3) (since C23)

where the designator is a sequence (whitespace-separated or adjacent) of individual member designators of the form . member and array designators of the form [ index ] .

All members that are not initialized explicitly are empty-initialized .

Explanation Nested initialization Notes Example References See also

[ edit ] Explanation

When initializing a union , the initializer list must have only one member, which initializes the first member of the union unless a designated initializer is used (since C99) .

When initializing a struct , the first initializer in the list initializes the first declared member (unless a designator is specified) (since C99) , and all subsequent initializers without designators (since C99) initialize the struct members declared after the one initialized by the previous expression.

A designator causes the following initializer to initialize the struct member described by the designator. Initialization then continues forward in order of declaration, beginning with the next element declared after the one described by the designator.

{int sec,min,hour,day,mon,year;} z = {.day=31,12,2014,.sec=30,15,17}; // initializes z to {30,15,17,31,12,2014}
(since C99)

It's an error to provide more initializers than members.

[ edit ] Nested initialization

If the members of the struct or union are arrays, structs, or unions, the corresponding initializers in the brace-enclosed list of initializers are any initializers that are valid for those members, except that their braces may be omitted as follows:

If the nested initializer begins with an opening brace, the entire nested initializer up to its closing brace initializes the corresponding member object. Each left opening brace establishes a new current object . The members of the current object are initialized in their natural order , unless designators are used (since C99) : array elements in subscript order, struct members in declaration order, only the first declared member of any union. The subobjects within the current object that are not explicitly initialized by the closing brace are empty-initialized .

If the nested initializer does not begin with an opening brace, only enough initializers from the list are taken to account for the elements or members of the member array, struct or union; any remaining initializers are left to initialize the next struct member:

When designators are nested, the designators for the members follow the designators for the enclosing structs/unions/arrays. Within any nested bracketed initializer list, the outermost designator refers to the and selects the subobject to be initialized within the only.

example ex2 = { // current object is ex2, designators are for members of example .in_u.a8[0]=127, 0, 0, 1, .addr=80}; struct example ex3 = {80, .in_u={ // changes current object to the union ex.in_u 127, .a8[2]=1 // this designator refers to the member of in_u } };

If any subobject is explicitly initialized twice (which may happen when designators are used), the initializer that appears later in the list is the one used (the earlier initializer may not be evaluated):

{int n;} s = { ("a\n"), // this may be printed or skipped .n= ("b\n")}; // always printed

Although any non-initialized subobjects are initialized implicitly, implicit initialization of a subobject never overrides explicit initialization of the same subobject if it appeared earlier in the initializer list (choose clang to observe the correct output):

typedef struct { int k; int l; int a[2]; } T; typedef struct { int i; T t; } S; T x = {.l = 43, .k = 42, .a[1] = 19, .a[0] = 18 }; // x initialized to {42, 43, {18, 19} } int main(void) { S l = { 1, // initializes l.i to 1 .t = x, // initializes l.t to {42, 43, {18, 19} } .t.l = 41, // changes l.t to {42, 41, {18, 19} } .t.a[1] = 17 // changes l.t to {42, 41, {18, 17} } }; ("l.t.k is %d\n", l.t.k); // .t = x sets l.t.k to 42 explicitly // .t.l = 41 would zero out l.t.k implicitly }

Output:

However, when an initializer begins with a left open brace, its is fully re-initialized and any prior explicit initializers for any of its subobjects are ignored:

fred { char s[4]; int n; }; struct fred x[ ] = { { { "abc" }, 1 }, // inits x[0] to { {'a','b','c','\0'}, 1 } [0].s[0] = 'q' // changes x[0] to { {'q','b','c','\0'}, 1 } }; struct fred y[ ] = { { { "abc" }, 1 }, // inits y[0] to { {'a','b','c','\0'}, 1 } [0] = { // current object is now the entire y[0] object .s[0] = 'q' } // replaces y[0] with { {'q','\0','\0','\0'}, 0 } };
(since C99)

[ edit ] Notes

The initializer list may have a trailing comma, which is ignored.

In C, the braced list of initializers cannot be empty (note that C++ allows empty lists, and also note that a in C cannot be empty):

(until C23)

The initializer list can be empty in C as in C++:

(since C23)

Every expression in the initializer list must be a when initializing aggregates of any storage duration.

(until C99)

As with all other , every expression in the initializer list must be a when initializing aggregates of static or thread-local(since C11) :

struct {char* p} s = { (1)}; // error

The of the subexpressions in any initializer is indeterminately sequenced (but not in C++ since C++11):

n = 1; struct {int x,y;} p = {n++, n++}; // unspecified, but well-defined behavior: // n is incremented twice in arbitrary order // p equal {1,2} and {2,1} are both valid
(since C99)

[ edit ] Example

This section is incomplete
Reason: more practical examples, perhaps initialize some socket structs

Possible output:

[ edit ] References

  • C17 standard (ISO/IEC 9899:2018):
  • 6.7.9/12-39 Initialization (p: 101-105)
  • C11 standard (ISO/IEC 9899:2011):
  • 6.7.9/12-38 Initialization (p: 140-144)
  • C99 standard (ISO/IEC 9899:1999):
  • 6.7.8/12-38 Initialization (p: 126-130)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 6.5.7 Initialization

[ edit ] See also

for Aggregate initialization
  • Todo with reason
  • Recent changes
  • Offline version
  • What links here
  • Related changes
  • Upload file
  • Special pages
  • Printable version
  • Permanent link
  • Page information
  • In other languages
  • This page was last modified on 26 January 2023, at 04:21.
  • Privacy policy
  • About cppreference.com
  • Disclaimers

Powered by MediaWiki

Learn C practically and Get Certified .

Popular Tutorials

Popular examples, reference materials, learn c interactively.

Store Data in Structures Dynamically

  • Store Information of Students Using Structure
  • Calculate Difference Between Two Time Periods
  • Add Two Complex Numbers by Passing Structure to a Function

Add Two Distances (in inch-feet system) using Structures

Store Information of a Student Using Structure

C Tutorials

  • C Files Examples
  • C Structure and Function
  • C structs and Pointers

C Program to Store Information of Students Using Structure

To understand this example, you should have the knowledge of the following C programming topics:

Store Information in Structure and Display it

In this program, a structure student is created. The structure has three members: name (string), roll (integer) and marks (float).

Then, we created an array of structures s having 5 elements to store information of 5 students.

Using a for loop, the program takes the information of 5 students from the user and stores it in the array of structure. Then using another for loop, the information entered by the user is displayed on the screen.

Sorry about that.

Our premium learning platform, created with over a decade of experience and thousands of feedbacks .

Learn and improve your coding skills like never before.

  • Interactive Courses
  • Certificates
  • 2000+ Challenges

Related Examples

Print an Integer (Entered by the User)

IEEE Account

  • Change Username/Password
  • Update Address

Purchase Details

  • Payment Options
  • Order History
  • View Purchased Documents

Profile Information

  • Communications Preferences
  • Profession and Education
  • Technical Interests
  • US & Canada: +1 800 678 4333
  • Worldwide: +1 732 981 0060
  • Contact & Support
  • About IEEE Xplore
  • Accessibility
  • Terms of Use
  • Nondiscrimination Policy
  • Privacy & Opting Out of Cookies

A not-for-profit organization, IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity. © Copyright 2024 IEEE - All rights reserved. Use of this web site signifies your agreement to the terms and conditions.

Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

  • View all journals
  • Explore content
  • About the journal
  • Publish with us
  • Sign up for alerts
  • Open access
  • Published: 06 September 2024

3D height-alternant island arrays for stretchable OLEDs with high active area ratio and maximum strain

  • Su-Bon Kim   ORCID: orcid.org/0000-0002-2860-3650 1 ,
  • Donggyun Lee   ORCID: orcid.org/0000-0002-9610-890X 1 ,
  • Junho Kim   ORCID: orcid.org/0000-0001-6564-7970 1 ,
  • Taehyun Kim 1 ,
  • Jee Hoon Sim   ORCID: orcid.org/0000-0001-5174-8770 1 ,
  • Jong-Heon Yang   ORCID: orcid.org/0000-0003-4714-9956 2 ,
  • Seung Jin Oh   ORCID: orcid.org/0000-0002-7882-4144 3 ,
  • Sangin Hahn   ORCID: orcid.org/0009-0000-6063-4310 1 ,
  • Woochan Lee   ORCID: orcid.org/0000-0002-2981-4636 1 ,
  • Dongho Choi   ORCID: orcid.org/0000-0002-5850-1532 1 ,
  • Taek-Soo Kim   ORCID: orcid.org/0000-0002-2825-7778 3 ,
  • Hanul Moon   ORCID: orcid.org/0000-0002-6393-5028 4 &
  • Seunghyup Yoo   ORCID: orcid.org/0000-0003-1887-6118 1 , 5  

Nature Communications volume  15 , Article number:  7802 ( 2024 ) Cite this article

Metrics details

  • Mechanical engineering
  • Organic LEDs

Stretchable optoelectronic devices are typically realized through a 2D integration of rigid components and elastic interconnectors to maintain device performance under stretching deformation. However, such configurations inevitably sacrifice the area ratio of active components to enhance the maximum interconnector strain. We herein propose a 3D buckled height-alternant architecture for stretchable OLEDs that enables the high active-area ratio and the enhanced maximum strain simultaneously. Along with the optimal dual serpentine structure leading to a low critical buckling strain, a pop-up assisting adhesion blocking layer is proposed based on an array of micro concave structures for spatially selective adhesion control, enabling a reliable transition to a 3D buckled state with OLED-compatible processes. Consequently, we demonstrate stretchable OLEDs with both the high initial active-area ratio of 85% and the system strain of up to 40%, which would require a lateral interconnector strain of up to 512% if it were attained with conventional 2D rigid-island approaches. These OLEDs are shown to exhibit reliable performance under 2,000 biaxial cycles of 40% system strain. 7 × 7 passive-matrix OLED displays with the similar level of the initial active-area ratio and maximum system strain are also demonstrated.

Introduction

Stretchable optoelectronic devices have attracted considerable attention as a versatile platform that has potential applications in wearable displays 1 , 2 , 3 , 4 , skin electronics 5 , 6 , 7 , robotics 8 , 9 , and healthcare technologies 10 , 11 , 12 . In stretchable devices, one of the crucial requirements is that the device performance should be maintained without functional failure under stretching deformations, as well as under bending and flexural deformations 4 , 13 , 14 , 15 , 16 . To achieve this important goal, the stretchable systems often rely on a complementary integration incorporating both performance-preserving rigid islands and interconnectors capable of dissipating stress under non-linear deformation 8 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 . However, such approaches in two-dimensional (2D) space inevitably sacrifice a planar density of active components to increase the maximum applicable strain of the interconnector (Supplementary Note  1 and Supplementary Fig.  1 for details). In order to overcome this critical limitation, several groups have recently introduced advanced techniques for realizing three-dimensional (3D) mesostructures across a diverse array of materials, employing a mechanically guided assembly process based on the principle of out-of-plane buckling in elastomeric substrates 25 , 26 , 27 , 28 , 29 , 30 , 31 . In particular, approaches based on a biaxial release of thin active films integrated on pre-strained elastomeric structures were shown effective in realizing deterministic 3D assembly via consistent morphological modifications 25 , 32 , 33 . In the conventional mechanically guided assembly method, however, the relatively low bending stiffness of the serpentine structure, which is preferred for enhancing the maximum applicable strain, could present an inherent obstacle to the realization of robust 2D-3D transformation, as it makes it difficult to overcome the interfacial adhesion energy between the elastomeric substrate and the thin film 34 , 35 . It has thus been challenging to realize 3D-structure-based stretchable devices that can attain a high initial density and a high level of the maximum applicable strain at the same time. Furthermore, the 3D methodologies reported to date involved high-temperature operations (> 180 °C), plasma or UV ozone process, or wet processes following the transfer process, which would degrade the performance of devices involving materials with low thermal budget or solvent resistance such as organic semiconductors 25 , 26 , 27 , 28 , 29 , 32 , 33 .

Here, we propose a strategy for a mechanically guided assembly with a spatially selective adhesion control that can lead to a predictable and reliable 2D-to-3D transition while avoiding wet processes and high-temperature environment in the post-transfer process for compatibility with organic light-emitting diodes (OLEDs). A joint theoretical and experimental study is performed to identify a dual serpentine structure to be optimal for an efficient out-of-plane interconnector buckling that induces little deformation in the rigid islands while ensuring sufficiently low stress to be applied on the interconnector itself. To ensure the 2D thin-film membranes overcome the interfacial adhesion energy necessary for the delamination of rigid islands interconnected with serpentine structure from the elastomeric substrate, we propose a pop-up assisting adhesive blocking layer (PA-ABL) that utilizes the effective interfacial contact-area modulation enabled by the presence of an array of micro-scale concave structures. With this proposed approach, we demonstrate stretchable OLEDs with an 85% active-area ratio in the initial, non-stretch (buckled) state that present only a small discrepancy of OLED performances under 2000 biaxial cycles of 40% system strain.

Overview and mechanical design of the proposed stretchable OLEDs with 3D pop-up architecture

Figure  1a depicts a schematic diagram of the proposed high-density stretchable OLEDs with a high initial active-area ratio ( \({\gamma }_{a0}\) ) based on 3D height-alternant island arrays. The system consists of (i) a bottom elastomer layer, serving as the physical support for the overall system; (ii) an adhesive layer that affixes a part of the membrane onto the bottom elastomer; (iii) a thin membrane that hosts an array of OLED pixels, contact pads, and stress-relieving interconnectors; and (iv) pop-up assisting adhesive blocking layer (PA-ABL) that enables selective adhesion reduction. With the help of the adhesive layer coated on the elastomer, the pre-patterned PA-ABL and the OLED devices are sequentially transferred onto the elastomer that is biaxially stretched by equal displacement ( \(\varDelta x=\varDelta y\) ). Note that islands with OLEDs that do not face the adhesive directly due to the presence of the PA-ABL are not bonded to the elastomer unlike the other parts of the membrane, forming a selectively bonded structure. While the main function of the PA-ABL is to prevent the adhesive layer from facing the structure on its top directly, it plays an additional yet critical role in assisting the structure on its top to easily pop up. This pop-up assisting nature is attributed to the dimpled surface morphology of the proposed PA-ABL that significantly reduces the attractive interaction between the ABL and the layer on its top, as will be discussed in detail in the upcoming section. In this way, the PA-ABL over the adhesive layer functions to disengage specific regions of the OLED devices, enabling 3D height-alternant island arrays, as shown in Fig.  1 b– d when the biaxial stretching is released ( \(\varDelta x=\varDelta y=0\) ). The proposed architecture utilizes a bottom-emission OLED device with polyimide as a substrate, whose key multilayer structure is shown in the cross-sectional scanning electron microscope (SEM) image (Fig.  1e ).

figure 1

a Conceptual illustration of the assembly strategy with PA-ABL and an OLED device on an elastomeric substrate. The adhesive layer is formed on the elastomeric substrate prior to symmetric biaxial pre-stretching ( \(\varDelta x=\varDelta y\) ). b The configuration image of stretchable OLEDs after biaxial strain release. The inset shows the scanning electron microscope (SEM) image of a fabricated stretchable OLED. c The schematic image of a unit OLED device in a pop-up state. d The role of PA-ABL in both 2D planar and 3D pop-up states. The proposed device is triggered by the biaxial strain release, resulting in a transition to a 3D pop-up state. The PA-ABL prevents an OLED from being lifted from facing the adhesive layer directly while significantly reducing attractive interactions between the OLED and the PA-ABL via decreased contact area resulting from its dimpled surface morphology. e The cross-sectional SEM image of the OLED device.

The initiation of out-of-plane buckling occurs when the compressive strain ( \({\varepsilon }_{{{\rm{comp}}}}\) ) surpasses the critical buckling strain ( \({\varepsilon }_{{{\rm{cri}}}}\) ), inducing a transition from the non-buckled state to the buckled state 36 (Fig.  2a and Supplementary Fig.  2 ) and thereby leading to a 3D pop-up structure with deterministic, freestanding topologies. It is preferable to keep \({\varepsilon }_{{{\rm{cri}}}}\) not too high to avoid the need for excessive mechanical energy to initiate the transition to the buckled state. However, the relatively low bending stiffness inherent to serpentine structure tends to result in a high \({\varepsilon }_{{{\rm{cri}}}}\) , underscoring the importance of identifying the ideal mechanical structure and reducing the total adhesion energy ( \({\varGamma }_{{{\rm{adh}}}}\) ) between the 2D rigid islands to be lifted and the PA-ABL (Supplementary Fig.  3 and Supplementary Note  2 for detailed calculations) for an effective evolution to an intended 3D buckled state 34 , 35 .

figure 2

a The shape and key geometric parameters of the proposed dual serpentine. The radius ( R ), width ( W ), and two length scales ( L r and L s ) are shown. \(\overline{{AA}}^{\prime} \,\) indicates a hinge section within which the top portion contains the most vulnerable point (P weak ) of the serpentine interconnector. The compressive strain \(({{\varepsilon }}_{{{\rm{comp}}}})\) of the serpentine interconnector is defined as \({\varepsilon }_{{\rm{comp}}}{=}({L}_{{{\rm{sp}}}}{-}{{L}}_{{{\rm{s}}}}^{\left({{\rm{proj}}}\right)})\) / \({{L}}_{{{\rm{sp}}}}\) . The operational stretching sequence consists of a sequence from the initial state in the popped-up condition to the state where system strain is applied. b The Von-Mises stress at P weak ( \(={{\sigma }}_{{{\rm{von}}}}^{{{\rm{max}}}}\) ) is estimated as a function of ( R , W ) at compressive strain ( \({{\varepsilon }}_{{{\rm{comp}}}}\) ) of 80%. The three cases I A , I B , and II are positioned at ( R , W ) = (60 μm, 40 μm), (35 μm, 35 μm), and (65 μm, 65 μm), respectively. c The spatial distribution of Von-Mises stress ( \({{\sigma }}_{{{\rm{von}}}}\) ) at \({{\varepsilon }}_{{{\rm{comp}}}}\)  = 80% obtained by FEA in Cases I A and II. d The spatial distribution of z-axis displacement ( \({{u}}_{{{\rm{z}}}}\) ) between Cases I A and I B obtained at \({{\varepsilon }}_{{{\rm{comp}}}}\)  = 15%. e The thicknesses of aluminum (Al) and pV3D3 in the multilayer configuration can result in the bending rigidity equivalent to that of a single layer (PI) with half of \({{t}}_{{{\rm{PI}}}}\) . The thickness of Al 2 O 3 is fixed at 60 nm. f The maximum stress applied to PI and Al vs. system tensile strain ( \({{\varepsilon }}_{{{\rm{sys}}}}\) ). Inset: schematic diagram showing three distinct states denoted as states A, B, and C according to \({{\varepsilon }}_{{{\rm{comp}}}}\) and \({{\sigma }}_{{{\rm{max }}}}\) .

For the mechanical design of the proposed stretchable OLEDs, the stress analysis was first done based on the buckling mechanics of single-layer interconnectors, to gain an insight without the complexity introduced via multilayer topology. From this analysis, the serpentine structure with a period ( N ) of 0.5 was determined to be the most advantageous for the efficient formation of a 3D pop-up structure, considering that \({\varepsilon }_{{{\rm{cri}}}}\) gets smaller as N decreases (Supplementary Fig.  3a and Supplementary Note  2 ) 34 , 35 . Among potential serpentine configurations with N  = 0.5, the dual serpentine structure is shown in the inset of Figs.  1b ,  2a was chosen in which anchor points are connected in symmetry to the central regions of the rigid islands with curved sides pointing outward. This structure was shown advantageous in keeping the distortion low on rigid islands, compared to other configurations such as single serpentine structures or dual serpentine structures with the anchor points near the edges of the rigid islands and the curved sides pointing inward. (Supplementary Fig.  4 ). Furthermore, compared to a long hinge structure, this design enhances the maximum applicable strain, allowing the proposed system to extend further beyond the 2D planar state ( \({\varepsilon }_{{{\rm{comp}}}}=0\) ) depicted in Fig.  2a .

The radius of the arc ( R ) and the width ( W ) of the dual serpentine interconnector (Fig.  2b ) were then varied to identify geometries that can ensure the reliable transition between the non-buckled and the buckled states as well as tolerance against high compressive strain to achieve high initial rigid-island area ratio \(({{{\rm{\gamma }}}}_{{{\rm{I}}}0})\) , which is defined by the area of the rigid island area ( \({A}_{{{\rm{I}}}}\) ) to the unit cell area of the array and is related to \({{{\rm{\gamma }}}}_{a0}\) by \({{{\rm{\gamma }}}}_{a0}={({A}_{{{\rm{I}}}}^{({{\rm{active}}})}/{A}_{{{\rm{I}}}}){{\rm{\gamma }}}}_{{{\rm{I}}}0}\) where \({A}_{{{\rm{I}}}}^{({{\rm{active}}})}\) is the active luminous area within a rigid island. Note that achieving high \({{{\rm{\gamma }}}}_{{{\rm{I}}}0}\) is thus a prerequisite to achieving high \({{{\rm{\gamma }}}}_{a0}\) in the schemes relying on rigid island platforms. We searched for conditions where the Von-Mises stress ( \({\sigma }_{{{\rm{von}}}}\) ) stays below the fatigue strength ( \({\sigma }_{{{\rm{f}}}}\) ) of polyimide (PI) at the most vulnerable point ( \({{{\rm{P}}}}_{{{\rm{weak}}}}\) ) of the serpentine interconnector (i.e., \({\sigma }_{{{\rm{von}}}}^{\max }\)  <  \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) ), which is in the top portion within the hinge section shown as a cross-sectional area along A-A’ in Fig.  2a . At this point, both bending-induced and torsional stress were shown to be concentrated. Calculation of \({\sigma }_{{{\rm{von}}}}^{\max }\) was performed analytically using an algorithm based on elasticity theory 36 and Castigliano’s theorem with \({\varepsilon }_{{{\rm{comp}}}}\) set at 80% (see Supplementary Note  3 and Supplementary Figs.  5 , 6 for details on calculation). The result indicates that \({\sigma }_{{{\rm{von}}}}^{\max }\) primarily reflects normal stress induced by the bending moment of the entire serpentine structure, which turns out to be dominant over the shear stress resulting from the torsional moment of the arms composing the serpentine (Supplementary Fig.  7 ). It is noted in Fig.  2c that \({\sigma }_{{{\rm{von}}}}^{\max }\) tends to decrease as R and W decreases in the range of R and W studied in this work. To meet the criteria of \({\sigma }_{{{\rm{von}}}}^{\max }\)  <  \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\approx\) 120 MPa, in particular, ( R , W ) should be in the region ‘ I ’ in Fig.  2c , the boundary of which is defined by the line connecting ( R , W ) \(\approx\) (30 \(\,{{\rm{\mu}}}{{\rm{m}}}\) , 74 \(\,{{\rm{\mu }}}{{\rm{m}}}\) ) and ( R , W ) \(\approx\) (74 \(\,{{\rm{\mu }}}{{\rm{m}}}\) , 30 \(\,{{\rm{\mu }}}{{\rm{m}}}\) ) (Supplementary Fig.  8 for the measured \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) of 120 MPa).

To illustrate its importance, the mechanical properties of the serpentine structures were further evaluated with finite element analysis (FEA) for 3D configuration in three different cases represented as i) star (=  Case I A ), (ii) triangle (=  Case II ), and (iii) square (=  Case I B ) in Fig.  2c . Categorization of Cases I A and I B vs. Case II is based on whether \({\sigma }_{{{\rm{von}}}}^{\max }\) stays lower or higher than \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) to emphasize that \({\sigma }_{{{\rm{von}}}}^{\max }\)  <  \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) condition should be fulfilled. Within Region ‘I’, Cases I A and I B are further distinguished to illustrate the importance of securing a sufficiently low critical buckling strain by the difference in the critical buckling strain, which increases as the width decreases, as detailed in Supplementary Note  2 . Case I A , which is the most suitable among the three, was chosen, in addition to the aforementioned criteria, upon consideration of a critical dimension for PI that can be reliably achieved via the patterning method used in this work. First of all, it is confirmed in Fig.  2d , comparing the spatial distribution of \({\sigma }_{{{\rm{von}}}}\) between Case I A and Case II, that \({\sigma }_{{{\rm{von}}}}^{\max }\) values obtained by the analytical model match relatively well with those obtained by FEA. It is also noted that \({\sigma }_{{{\rm{von}}}}^{\max }\) of Case I A (analytical model: 91 MPa, FEA result: 98 MPa) is indeed below \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) (Fig.  2d , top ); in contrast, \({\sigma }_{{{\rm{von}}}}^{\max }\) (analytical model: 134 MPa, FEA result: 127 MPa) of Case II exceeds the fatigue strength of PI (Fig.  2d , bottom ), making Case II subject to the risk of fatigue-induced failure.

Finite element analysis (FEA) further shows that it is not just \({\sigma }_{{{\rm{von}}}}^{\max }\) that matters in realizing a 3D pop-up structure. Figure  2e compares the spatial distribution of z -axis displacement ( \({u}_{{{\rm{z}}}}\) ) between Cases I A and I B obtained at \({\varepsilon }_{{{\rm{comp}}}}\)  = 15% (see Supplementary Fig.  9 for z -axis displacement analysis), both of the cases fulfill the \({\sigma }_{{{\rm{von}}}}^{\max }\)  <  \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) criteria, but Case I B fails to make a transition into the buckled pop-up state due to an increase in \({\varepsilon }_{{{\rm{cri}}}}\) attributed to its low W , while Case I A can transition into the buckling state ( \({u}_{{{\rm{z}}}}\)  = 164.4 μm), allowing for OLED membranes to pop up even at relatively low compressive strain (see Supplementary Note  2 for a detailed calculation of \({\varepsilon }_{{{\rm{cri}}}}\) ). For \({\varepsilon }_{{{\rm{comp}}}}\)  > 15%, the overall small dimension of Case I B does not allow for further compression without causing physical contacts between the edges of the serpentine structure. This case study well illustrates the importance of choosing optimal geometric parameters, such as that of Case I A , so that a high \({\varepsilon }_{{{\rm{cri}}}}\) can be avoided to effectively realize 3D pop-up structure.

While the analysis introduced so far is based on a single layer of PI, the actual interconnecting region consists of a multilayer assembly of PI/encapsulation/Al/encapsulation. In spite of this discrepancy, the analysis and its results obtained from a single layer could be kept valid by identifying a multilayer configuration of which the effective bending rigidity (= \(\overline{{EI}}\) ) is equivalent to that of the single PI layer (= \({E}_{{{\rm{PI}}}}{I}_{{{\rm{PI}}}}\) ). (Fig.  2f and Supplementary Note  4 for details). The thickness of Al 2 O 3 was fixed at 60 nm to ensure a sufficient level of gas barrier properties. The thickness of poly(1,3,5-trimethyl-1,3,5-trivinyl cyclotrisiloxane) (pV3D3) 37 , 38 ( \({t}_{{{\rm{pV}}}3{{\rm{D}}}3}\) ) set at 162 nm and that of Al ( \({t}_{{{\rm{Al}}}}\) ) set at 150 nm were found to be among the combinations that meet \({E}_{{{\rm{PI}}}}{I}_{{{\rm{PI}}}}=\,\overline{{EI}}\) . This process was shown to preserve \({\sigma }_{{{\rm{von}}}}^{\max }\) \(({\varepsilon }_{{{\rm{comp}}}})\) well as shown in Supplementary Fig.  10 , confirming the validity of our design approach.

As a last step, to determine the overall operation range and understand the effect of the system operation on local mechanical movement, the stress analysis was performed as a function of system tensile strain ( \({\varepsilon }_{{{\rm{sys}}}}\) ), defined as

where \({L}_{{{\rm{s}}}}\) and \({L}_{{{\rm{r}}}}\) are the lengths of the serpentine electrode and the rigid island, respectively, as denoted in Fig.  2a . The superscript ‘(proj)’ and ‘0’ in the subscript indicate the effective length of the parameters projected onto the plane of rigid islands and the value obtained in the initial non-stretched condition ( \({\varepsilon }_{{{\rm{comp}}}}\)  = 80%), respectively. As shown in Fig.  2g , there are three distinct states (see the FEA-predicted images in the Inset: State A, State B , and State C ). State A corresponds to a 3D pop-up configuration with the highest spatial density of rigid islands, State B corresponds to a planar configuration with the smallest stress, and State C corresponds to a semi-2D configuration in which serpentine electrodes are further deformed to accommodate higher system tensile strain. Note that, with the bottom elastomer stretched, the proposed dual serpentine interconnector remains in a non-buckled state to form a ‘2D planar’ state (State B) or further stretched state (State C). When a compressive strain ( \({\varepsilon }_{{{\rm{comp}}}}\) ) of 80% is applied by releasing the strain applied to the elastomer, it transitions to a buckled state (State A). (Fig.  2a and the inset of Fig.  2g .) Transitioning among three distinct states, the designed device has an operational range of \({\varepsilon }_{{{\rm{sys}}}}\) from 0% to 40%. In this operational range, \({\sigma }_{{{\rm{von}}}}^{\max }\) remains below \({\sigma }_{{{\rm{f}}}}^{{{\rm{PI}}}}\) (≈ 120 MPa) and that of aluminum ( \({\sigma }_{{{\rm{f}}}}^{{{\rm{Al}}}}\approx\) 1.75 GPa), which were verified through repeated tensile stress tests (Supplementary Fig.  8 ).

Reduction of the interfacial adhesion energy for reliable 3D pop-up operation

Figure  3a outlines the proposed OLED-compatible integration method essential for constructing a 3D pop-up structure (see Supplementary Figs.  11 , 12, and Methods for full details). The elastomer (Dragon Skin 10, Smooth-on Inc.) coated with the adhesive layer in its central region is pre-stretched using a customized biaxial stage. Then, an aligning block is placed to serve as a mechanical guide that ensures the OLED-containing membrane and the pop-up assisting adhesion blocking layer (PA-ABL) are aligned onto the desired region. The PA-ABL, composed of PDMS, is transferred before the OLED layer so that only the selective portion of the adhesive layer may be exposed to the OLED membrane. Finally, the OLED layer is transferred, and the biaxial pre-strain is released to induce out-of-plane buckling to complete a 3D pop-up structure in which every other rigid island is lifted up while the others remain in the original plane.

figure 3

a Illustration of the fabrication process comprised of a sequence involving the transfer of the PDMS layer, followed by OLED transfer and the release of pre-strain. Shown on the left is the biaxial stage with the aligning block used for precise control during the assembly process. b Maximum stress in PI (red) and Al (blue) versus \({{{\varepsilon }}}_{{{\rm{comp}}}}\) obtained for the non-buckled state (circles) and the buckled state (squares). c The measured effective work of adhesion ( G c ) vs. the open-area ratio ( \({{{\eta }}}_{{{\rm{open}}}}\) ) of the PA-ABL, presented as the mean and standard deviation of three measurements. d The measured number of popped-up islands ( N up ) vs. \({{{\varepsilon }}}_{{{\rm{comp}}}}\) applied to serpentine connectors. e The false-color SEM images of the fabrication results after the sequential transfer of the OLED device layer and the PA-ABL obtained at \({{{\eta }}}_{{{\rm{open}}}}\)  = 0, 41%, and 88%. The images were taken under \({{{\varepsilon }}}_{{{\rm{comp}}}}\)  = 80% enabled by equal biaxial strain release. The left schematic images show the selective bonding area (shown with the white outlines in the bottom image) and the blocking (non-bonding) area between the OLED device layer and the PA-ABL. In the blocking area, the PA-ABL covers up the adhesive layer such that the island with the selected OLED is not glued and can eventually be lifted when a sufficient \({{{\varepsilon }}}_{{{\rm{comp}}}}\) is applied.

\({\varepsilon }_{{{\rm{cri}}}}\) increasing with \({\varGamma }_{{{\rm{adh}}}}\) as discussed in Supplementary Note  2 , the PA-ABL can play a pivotal role in enabling a 3D pop-up structure at low \({\varepsilon }_{{{\rm{cri}}}}\) by reducing the adhesion energy ( \({\varGamma }_{{{\rm{adh}}}}\) ) 34 . The lack of PA-ABL would tend to yield relatively high \({\varepsilon }_{{{\rm{cri}}}},\) leading to the non-buckled state over a wide range of \({\varepsilon }_{{{\rm{comp}}}}\) , which can be detrimental to the system reliability because \({\sigma }_{\max }\) of PI and Al in the non-buckled case could be hiked even over a small increase in \({\varepsilon }_{{{\rm{comp}}}}\) (Fig.  3b ).

Our study further reveals that a simple planar PA-ABL would be far from ideal in reducing \({\varGamma }_{{{\rm{adh}}}}\) sufficiently. A double cantilever beam (DCB) test confirms the reduced \({\varGamma }_{{{\rm{adh}}}}\) with the proposed micro-concave structures 39 (Supplementary Fig.  13 for DCB load-displacement results). As shown in Fig.  3c , the critical strain energy release rate ( G c ), measured as the effective work of adhesion, is as large as 259 mJ/m 2 for the flat PA-ABL. On the other hand, it gets reduced by seven times to 33 mJ/m 2 once the PA-ABL has the open (i.e., non-contact)-area ratio (= \({\eta }_{{{\rm{open}}}}\) ) of 88%. Such a high degree of \({\eta }_{{{\rm{open}}}}\) is realized in this work by an array of micro-concave structures patterned on the top surface of a PDMS layer (Supplementary Fig.  12 for the detailed fabrication procedure). The number of rigid islands transitioning from a planar state to a pop-up state under \({\varepsilon }_{{{\rm{comp}}}}\) induced by biaxial pre-strain release supports the important role of reduced G c (Fig.  3d ). For a flat PA-ABL surface, the out-of-plane buckling in the interconnector was not triggered even with \({\varepsilon }_{{{\rm{comp}}}}\)  = 80%. For the surface with \({\eta }_{{{\rm{open}}}}\)  = 41%, the number of rigid islands transitioning to the pop-up state (=  N up ) gradually increased from \({\varepsilon }_{{{\rm{comp}}}}\)  ≈ 10%. For \({\eta }_{{{\rm{open}}}}\,\) = 88%, on the other hand, N up was observed to increase even at \({\varepsilon }_{{{\rm{comp}}}}\) as low as 5% and, moreover, its increase over \({\varepsilon }_{{{\rm{comp}}}}\) was sharp enough to ensure a clear, effective transition even at low \({\varepsilon }_{{{\rm{comp}}}}\) . The false-color SEM images of the stretchable OLED devices in State A with \({\varepsilon }_{{{\rm{comp}}}}\)  = 80% clearly illustrate the significance of the proposed PA-ABL with an array of micro-concave structures for proper, fail-free operation of stretchable OLEDs based on 3D pop-up architectures (Fig.  3e ). The PA-ABL with a flat top surface, on the other hand, suppresses out-of-plane buckling of the serpentine structure and results in an intertwined appearance.

Mechanical and optoelectrical behavior under biaxial stretching

The mechanical performance was first evaluated using the proposed 3D pop-up structure composed of PI, electrodes (Al), and encapsulation layer (Fig.  4a ), which corresponds to the multilayer structure of the interconnector regions in the stretchable OLEDs under study. With repetitive symmetric biaxial tensile stretching with the system strain ( \({\varepsilon }_{{{\rm{sys}}}}\)  =  \({\varepsilon }_{{{\rm{x}}}}\,\) =  \({\varepsilon }_{{{\rm{y}}}}\) ) of 40%, the structure having the PA-ABL with \({\eta }_{{{\rm{open}}}}\,\) = 88% exhibited electrical resistance ( R ) that maintained its initial value ( R 0 ) well with only a small increase below 5% even after 2000 cycles. On the other hand, the structure having the PA-ABL with \({\eta }_{{{\rm{open}}}}\,\) = 41% showed R that linearly increased until ca. 500 cycles, after which its increase got steep and eventually became too large due to a mechanical fracture. These results will illustrate the importance of securing sufficiently high \({\eta }_{{{\rm{open}}}}\) , being consistent with the discussion made for Fig.  3 b– d . The current ( I )-voltage ( V ) characteristics were measured for the structure with \({\eta }_{{{\rm{open}}}}\)  = 88% at \({\varepsilon }_{{{\rm{sys}}}}\) of 0%, 10%, 20%, 30%, and 40%, which correspond to \({\varepsilon }_{{{\rm{comp}}}}\) of 80%, 50%, 20%, − 9%, and − 39%, respectively. (Fig.  4b ) The invariance is observed in the measured I – V characteristics over a wide range of \({\varepsilon }_{{{\rm{sys}}}}\) , further demonstrating the mechanical reliability enabled by the proposed pop-up structure with the PA-ABL having large \({\eta }_{{{\rm{open}}}}\) .

figure 4

a Resistance changes of a serpentine structure composed of PI layer, encapsulation layer, and Al layer, measured at the initial state during cyclic tests of equal biaxial stretching with the PA-ABL having open-area ratios ( \({{{\eta }}}_{{{\rm{open}}}}\) ) of 41% and 88%, respectively. b Current-voltage characteristics of a 3D pop-up structure fabricated using the PA-ABL with \({{{\eta }}}_{{{\rm{open}}}}\)  = 88%. Measurement was done for equal biaxial strains of 0, 10%, 20%, 30%, and 40%. c The photographs of the proposed stretchable OLED devices with PA-ABL having \({{{\eta }}}_{{{\rm{open}}}}\)  = 88% under the applied equal biaxial strain of 0, 25%, and 40%. d Current density ( J )-luminance ( L )-voltage ( V ) characteristics and ( e ) Current efficiency vs L of the stretchable OLEDs under various equal biaxial strains. f Normalized J , L , and current efficiency at a driving voltage of 6 V under cyclic stretch-release test for a biaxial strain of 40% (a.u., arbitrary unit). g (Left) Schematic diagram that illustrates convex deformation. (Right) Maximum strain of the elastomer surface versus radius of curvature ratio ( r/R ) obtained from FEA results. (Bottom) The photographs of working stretchable OLEDs under convex deformation with various r/R ratios. h System maximum strain ( \({{{\varepsilon }}}_{{{\rm{sys}}}}^{{{\rm{max }}}}\) ) and initial rigid-island area ratio ( \({{{\gamma }}}_{{{\rm{I}}}{{\rm{0}}}}\) ) of previously reported 2D rigid island platforms 22 , 23 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 and the proposed stretchable OLEDs. The color map indicates the interconnector strain ( \({{{\varepsilon }}}_{{{\rm{i}}}}\) ) that is required to achieve ( \({{{\gamma }}}_{{{\rm{I}}}{{\rm{0}}}}\) , \({{{\varepsilon }}}_{{{\rm{sys}}}}^{{{\rm{max }}}}\) ) in 2D rigid island platforms. The ‘star’ mark corresponds to ( \({{{\gamma }}}_{{{\rm{I}}}{{\bf{0}}}}\)  = 85% \({{{\varepsilon }}}_{{{\rm{sys}}}}^{{{\rm{max }}}}\)  = 40%), achieved with the proposed 3D platform. If this level of performance had been achieved with the conventional 2D rigid island schemes, the required interconnector strain would have been as high as 512%.

The photographs in Fig.  4c present the proposed stretchable OLED composed of a 5 × 5 array using the PA-ABL with \({\eta }_{{{\rm{open}}}}\)  = 88%. It can be seen that it operates quite in a uniform manner without dark spots or noticeable visual imperfection under a constant current of 0.2 mA at \({\varepsilon }_{{{\rm{sys}}}}\)  = 0%, 25%, and 40% (see Supplementary Movie  1 for pop-up operation under biaxial stretching from \({\varepsilon }_{{{\rm{sys}}}}\)  = 0% to 40%). Most of all, they show the 3D configuration anticipated from the FEA results in the three distinct states, highlighted by \({{{\rm{\gamma }}}}_{{{\rm{I}}}0}(={{{\rm{\gamma }}}}_{a0}\,,\because \,{A}_{{{\rm{I}}}}^{\left({{\rm{active}}}\right)}=\,{A}_{{{\rm{I}}}})\) of 85% at \({\varepsilon }_{{{\rm{sys}}}}\)  = 0% and a maximum system strain of 40% (Supplementary Fig.  14 for the measured \({{{\rm{\gamma }}}}_{{{\rm{I}}}}\) ‘s). Although these photographs, taken with a camera equipped with a macro lens, clearly reveal the height differences within the 3D height-alternant structure, these variations are not readily perceptible to the human eye. This is due to the limited human binocular vision, which allows for the typical minimal perceivable depth of about 1-2 mm (refer to Supplementary Note  5 for further discussion.). Most importantly, as the resolution increases and thus both the islands and the serpentines become scaled down, it becomes even less likely that these height differences will be noticed. Figure  4 d, e presents the electroluminescent (EL) performance of the stretchable OLEDs under \({\varepsilon }_{{{\rm{sys}}}}\) ranging from 0% to 40% in 10%. The low leakage current observed in the measured current density ( J )―voltage ( V ) characteristic can be attributed to the smooth surface with root-mean-square (RMS) roughness of about 1 nm, as indicated in the Atomic force microscopy (AFM) data in Supplementary Fig.  15. The EL performance of the OLEDs showed only a slight variation under different system strain, with a current efficiency of 55 cd/A at 100 nits in the initial state and a slightly reduced current efficiency of 54 cd/A under a biaxial strain of 40%, partly due to the rigid island-based approach where the strain on the active region is kept minimal and, most of all, due to the advantage of the proposed 3D pop-up structure. The cyclic biaxial stretch-release, test performed at a rate of 10 mm/s with a biaxial strain of 40%, indicates that the EL performance, measured at the initial state with a constant voltage of 6 V (Fig.  4f and Supplementary Fig.  16 for measurement setup), also maintains its characteristics well even after 2000 cycles; the current density and luminance get reduced only by 1.9% and 2.7%, respectively, from their initial values, and the current efficiency decreases merely by 0.8% (see Supplementary Fig.  17 for SEM images of the device after biaxial stretching cycles and Supplementary Movie  2 for cyclic operation). Supplementary Fig.  18 presents the simulated spatial distribution of shear stress at the key interfaces for the adhesives and the measured lap shear strength of the adhesive. The simulation results indicate that the adhesive used in this work can withstand operational stresses without failure, even at a relatively high compressive strain of up to 80%.

As the demands for integrating displays over various objects increase, so does the importance of displays that can conform over 3D objects beyond mere flatness 40 , 41 , 42 . That is, when operating stretchable OLEDs, deformation over a curved surface can be as important as stretching in a two-dimensional plane. The graph in Fig.  4g shows the FEA results for the maximum strain induced by convex deformation at various radius of curvature ratios ( r/R ) depicted in the schematic diagram. The maximum of analyzed strain ( \({\varepsilon }_{{{\rm{x}}}}^{\max }\) , \({\varepsilon }_{{{\rm{y}}}}^{\max }\) ) on the surface of the elastomer reaches from ca. 4% at r/R  = 0.2 (mild convex deformation) to ca. 25% at r/R  = 1 (steep convex deformation) (see Supplementary Fig.  19 for detailed FEA results). The fabricated device showed stable operation and little variations in EL performance under convex deformation across r/R values ranging from 0.2 to 1 (Refer to the photographs in Fig.  4g and Supplementary Fig.  20 ), affirming the reliability and structural integrity of the proposed stretchable OLEDs even under convex deformation. Mechanical analysis and the results of experiments that compare the performance evolution over time among glass-reference OLEDs and stretchable OLEDs — with and without the 2000 stretch-and-release cycles — indicate that (i) the 1.5 dyad encapsulation layers provide a sufficient level of protection against ambient air for the purpose of this study; and that (ii) the encapsulation properties are maintained well even after the repeated stretching cycles (Supplementary Figs.  21 , 22 ). While the application of an encapsulation layer with 2.5 dyads will further enhance the barrier properties for long-term protection of organic devices, it should be noted that the strain across the encapsulation stacks can increase, particularly at the edges. Nevertheless, our simulation study suggests that high strain is localized to a very small region along the edge, as shown in Supplementary Fig.  22b , and that the majority of the island area experiences far less strain than the crack onset strain of Al 2 O 3 . As long as the active region remains within the ‘safe zone’ (e.g., within the central 0.95 \(\times\) 0.95 mm 2 ), adequate protection against ambient air can still be considered feasible, from the practical perspectives, with a minimal decrease \({{{\rm{\gamma }}}}_{a0}.\) (Refer to Supplementary Fig.  22e for further details.).

A stretchable passive matrix OLED with a high active area ratio

To illustrate the benefits of the proposed pop-up approach for stretchable displays, we have configured our proposed stretchable OLEDs in the form of a 7 × 7 passive matrix (PM) array, which simultaneously exhibits high, \({\gamma }_{{{\rm{I}}}0},\,{\gamma }_{a0}\) , and \({\varepsilon }_{{{\rm{sys}}}}^{\max }\) . The OLED device with a 3D height-alternant island array was fabricated using PA-ABL with η open  = 88%. Tested by fabricating several samples and examining the distribution of critical buckling strain, the pop-up mechanism enabled with PA-ABL was shown to be reproducible in a consistent manner (Supplementary Fig.  23 ). Figure  5a shows the overall system setup that consists of (i) a computer-controlled, Arduino (Arduino®, Arduino mega 2560) based driver; (ii) a customized flexible printed circuit board (FPCB) connecting a stretchable PMOLED and the driver with Ag paste; and (iii) a biaxial translational stage holding the stretchable PMOLED at a given system strain. The PMOLED structure includes vertical scan lines linked to the cathode and horizontal data lines connected to the anode. The 7 × 7 pixel array includes both bonded and pop-up pixels, as shown in detail in Supplementary Fig  24 .

figure 5

a The overall system setup for the implementation of the stretchable passive-matrix OLED display. On the right side, a simplified schematic diagram is presented that shows the bonded and pop-up pixels composing the 7 × 7 arrays, whose detailed layer configurations are provided in Supplementary Fig.  24 . b Schematic diagram of the system setup for demonstrating the passive matrix. c Photographs displaying the characters in “3D OLED” one by one when biaxial system strains of 0%, 25%, and 45% are applied.

We demonstrated dynamic operation of the proposed PMOLEDs by sequentially activating the characters ‘3’, ‘D’, ‘O’, ‘L’, ‘E’, and ‘D’ (Fig.  5b and Supplementary Movie  3 ) at biaxial system strains of 0%, 25%, and 45%. Each character was activated through specific sets of voltage streams applied to the data and scan lines (Supplementary Fig.  25 ). It is noteworthy that, even for PM operation, this process not only achieved \({{{\rm{\gamma }}}}_{{{\rm{I}}}0}\) and \({{{\rm{\gamma }}}}_{a0}\) as high as 85% and 82%, respectively, but also demonstrated operation at a maximum strain of 45%, highlighting the significant benefits of the present technology for stretchable displays. In addition, OLEDs on the proposed platform were shown to cause little heat accumulation and exhibit spectral consistency during the continuous operation over time (Supplementary Fig.  26 ). Unlike previous works adopting 3D architectures for stretchable devices 27 , 43 , 44 , our methodology neither uses post-transfer wet processes and thermally-induced bonding processes 27 , 43 nor has a much smaller active luminous area with respect to the rigid island area even for matrix-type display applications 27 , 44 . (Supplementary Table  1 for detailed comparison).

To extend this platform into more sophisticated display applications, it is crucial to assess whether our processes are compatible with high pixel-per-inch (ppi) resolutions and active-matrix (AM) displays. Currently, state-of-the-art stretchable display prototypes, demonstrated by major display manufacturers, feature AM displays with the minimum dimension of polyimide islands corresponding to 100 ppi (254 µm) and 200 ppi (127 µm) 45 , 46 . Based on this polyimide-based island technology, the methodology proposed here should also be compatible with a similar level of pixel density and AM configuration. Furthermore, it is important to note that a single rigid island may host multiple pixels. Considering the number of electrode lines required for either PM or AM operation per pixel, configuring four pixels per island is reasonable when arranging the individual arms of the dual serpentine interconnectors in both horizontal and vertical directions to have one (PM) or multiple (e.g., two each in AM) electrode line(s) per arm.

Regarding AM operation, it is crucial to recognize that the adequacy of available electrode lines is not the only concern. The technology should also be compatible with the preparation of the in-pixel components such as thin-film transistors (TFTs) and capacitors. Polyimides, in fact, have been a standard substrate material used in industry for displays adopting flexible AMOLEDs, not just for prototype stretchable displays. This is due to the excellent chemical resistance and relatively high serviceable temperature of polyimides that enable the preparation of low-temperature poly-Si (LTPS) or oxide semiconductors for TFTs and the photolithographic patterning of in-pixel components (TFTs, capacitors, electric lines, etc.). As our devices are initially built on polyimide substrates and the transfer process occurs after the fabrication of all essential components, including encapsulation, any standard process used in the fabrication of flexible or stretchable PM or AMOLED in industry can be applied with little modification, enabling more straightforward industrial adoption.

In summary, we proposed a strategy involving 3D pop-up structures to realize stretchable OLEDs that can simultaneously achieve a high initial density of rigid islands and a high maximum interconnector strain. Utilizing a mechanically guided assembly method and OLED-compatible fabrication strategy, the proposed OLEDs were designed to get stretched up to a system biaxial strain ( \({\varepsilon }_{{{\rm{sys}}}}\) ) of 40% while making effective transitions among the initial non-stretched state ( \({\varepsilon }_{{{\rm{sys}}}}\)  = 0%) with the highest spatial density of rigid islands, a state corresponding to a planar configuration with the smallest stress ( \({\varepsilon }_{{{\rm{sys}}}}\) \(\approx\) 25%), and a state having a semi-2D configuration in which the serpentine electrodes are further deformed to accommodate higher system strain ( \({\varepsilon }_{{{\rm{sys}}}}\) \(\approx\) 40%). Two essential factors for the successful realization of the proposed 3D pop-up structures were as follows: (i) the mechanical design of out-of-plane buckled interconnectors based on an optimal dual serpentine structure that ensures rigid islands to be lifted effectively at a relatively low compressive strain while maintaining the maximum stress applied onto the most vulnerable portion ( \({\sigma }_{\max }\) ) to remain below the fatigue strength values for the substrate (PI) and the aluminum electrodes across the serpentine interconnectors; (ii) substantial reduction of interfacial adhesion energy ( \({\varGamma }_{{{\rm{adh}}}}\) ) between the 2D membranes to be popped up and the regions underneath them, which was enabled by the proposed pop-up assisting adhesion blocking layer (PA-ABL) that selectively covers up adhesive layers. The top surface of the proposed PA-ABL was designed to have a dimpled surface with an array of concave micropatterns, realizing the open-area ratio ( \({\eta }_{{{\rm{open}}}}\) ) of up to 88% so that the adhesion energy between the PA-ABL and the rigid island on its top can be reduced to a significant degree. With the proposed PA-ABL, a reduction in \({\varGamma }_{{{\rm{adh}}}}\) by more than five times was demonstrated with respect to that of a planar adhesion blocking layer. Comparison made between the present and previous works in terms of the maximum system strain and the initial rigid-island area ratio ( \({\gamma }_{{{\rm{I}}}0}\) ) suggests that it is difficult, in conventional 2D rigid island platforms, to achieve a maximum interconnector strain ( \({\varepsilon }_{{{\rm{i}}}}\) ) far exceeding the empirical threshold of \({\varepsilon }_{{{\rm{i}}}}=140\%\) line in Fig.  4h while maintaining a high \({\gamma }_{{{\rm{I}}}0}\,\) . Note that \({\varepsilon }_{{{\rm{i}}}}\) in 2D, rigid island platforms are related to \({\varepsilon }_{{{\rm{sys}}}}\) by \({\varepsilon }_{{{\rm{sys}}}}=\left(1-\sqrt{{\gamma }_{{{\rm{I}}}0}}\right){\varepsilon }_{{{\rm{i}}}}\) . The level of \({\gamma }_{{{\rm{I}}}0}\) (= 85%) and the maximum system strain (= 40%) achieved with the proposed stretchable OLEDs can be considered significant in that it could be achieved only with interconnectors that can sustain strain of 512% if it were done with a 2D rigid island platform (Fig.  4h ). To further enhance the maximum strain of the dual serpentine structure proposed in this study, consideration can be given to reducing the thickness of polyimides. This is partly because both tensile properties and pop-up states in this structure are predominantly governed by buckling mechanisms that can be facilitated by a thinner substrate 18 . However, any reduction in thickness should be approached with caution, considering the risks associated with the transfer and laser lift-off processes.

While this work presents a solution to overcome the fundamental limitations of 2D rigid island platforms in terms of \({\gamma }_{{{\rm{I}}}0}\) and \({\gamma }_{a0}\) , it does not fully address the challenges posed by the stretching-induced increase in the lateral gap between islands and the resulting image distortion in stretchable displays (e.g., resolution loss, aspect ratio change, etc.). Nevertheless, the high initial pixel density that becomes available with the proposed technology can be advantageous in mitigating stretching-induced image distortion, for instance, by introducing surplus pixels that are inactive in the initial state but selectively activated upon stretching to compensate for distortion.

The proposed stretchable OLEDs with the 3D height-alternant island array structure, composed of a 5 × 5 array using the PA-ABL with \({\eta }_{{{\rm{open}}}}\)  = 88%, were shown to operate in a uniform manner at various system strains, as well as under tight convex deformation, which illustrates the versatile nature of the proposed stretchable OLEDs and affirms their reliability and structural integrity. A 7 × 7 PMOLED operation was also demonstrated with \(\,{\gamma }_{{{\rm{I}}}0}\) 85%, \({\gamma }_{a0}\) 82%, and \({\varepsilon }_{{{\rm{sys}}}}^{\max }\) of up to 45%. With the high initial active area ratio and a semi-2D operation where square lattice geometry is maintained while being stretched, the proposed stretchable displays will be preferred in applications wherein displays are used mostly in the initial state but have to deal with occasional stretching, as in the wearable applications. With (i) the comprehensive yet step-by-step design strategies that are compatible even with materials having a low thermal budget and low chemical resistance and (ii) the use of materials like polyimide and its laser lift-off / patterning processes that are already employed in the AMOLED display industry, we believe our methodology can open up an effective and practical pathway towards the realization of stretchable OLEDs or many other optoelectronic systems that can fulfill the demanding requirements of various applications.

Fabrication of the proposed stretchable OLEDs

The fabrication process of stretchable OLEDs can be majorly categorized into three stages: (i) fabrication of the OLED device layer, (ii) fabrication of the pop-up assisting adhesive blocking layer (PA-ABL), and (iii) transfer and 3D morphing processes.

Fabrication of OLED device layers

On a 4-inch glass wafer, polyamic acid (KPI-1200, Komec) was formed via spin coating and subsequently converted into a 2.5 μm-thick polyimide (PI) film through a thermal imidization process at 280 °C for an hour. A 100 nm-thick aluminum was deposited onto the PI thin-film via a sputtering process, and patterned by a conventional photolithography process. With the aluminum patterns serving as an embedded mask, the PI film was patterned through a reactive ion etching (RIE) process under an oxygen plasma condition (RF power: 300 W, O 2 gas inflow: 25 sccm), after which the aluminum patterns were removed using its etchant (Supplementary Fig.  11 ). A 160 nm-thick pV3D3 film was deposited through a free-radical polymerization reaction, utilizing an initiator of tert-butyl peroxide (TBPO) and a monomer of 1,3,5-trimethyl-1,3,5-trivinylcyclotrisiloxane (V3D3) in a custom-built iCVD chamber. On top of the pV3D3 layer, a 60 nm thick-Al 2 O 3 layer was deposited through an atomic layer deposition (ALD, Lucida D100 NCD Co.) at a low temperature of 70 °C, using a trimethylaluminum (TMA) precursor and H 2 O reactant. Another 160 nm pV3D3 layer was deposited on the Al 2 O 3 layer, using the same iCVD process as before. The pV3D3/Al 2 O 3 /pV3D3 structure was intended for a bottom encapsulation, and the layers for the OLED device were sequentially deposited using a shadow mask technique (refer to Supplementary Fig.  27 for detailed design of the shadow masks). Initially, a 100 nm-thick indium zinc oxide (IZO) layer as an anode, was deposited selectively onto the rigid island using a RF sputtering process in a vacuum chamber at a pressure of 5.8 × 10 −3 torr. A 150 nm-thick aluminum layer was then, deposited utilizing a vacuum thermal evaporator (HS-1100, Digital Optics & Vacuum) selectively onto the interconnector area to provide electrical connections between the IZO patterns. On top of the IZO layer, organic semiconductor layers were deposited using the vacuum thermal evaporator, in the sequence of a 140 nm-thick 4,4′-cyclohexylidenebis [N,N-bis(4- methylphenyl)benzenamine] (TAPC) layer as a hole injection layer, a 10 nm-thick tris(4-carbazoyl-9-ylphenyl) amine (TCTA) layer as a hole transport layer, a 30 nm-thick TCTA: Ir(dmppy-ph) 2 tmd: 4, 6-bis(3,5-di(pyridin-3-yl)phenyl)−2-methylpyrimidine (B3PYMPM) (48: 48: 4 wt. %) layer as an emission layer, and a 70 nm-thick B3PYMPM layer as an electron transport layer. Lastly, LiF (1 nm)/Al (150 nm) layers were deposited as a top cathode. In the 5 × 5 rigid island configuration, the horizontal lines of the top cathode and vertical lines of the bottom anode overlap in the rigid island area (Supplementary Fig.  27 ). A top encapsulation structure, which was the same structure as the bottom encapsulation, was formed on top of the OLED device. In preparation for the transfer process, the OLED device layer was delaminated from the glass wafer using a laser-lift off (LLO) technique via an excimer laser equipment (KORONA TM , AP systems) (Supplementary Fig.  11 ). Before transferring onto an elastomeric substrate, the cathode electrode pad and anode electrode pad of the OLED device were connected to a customized FPCB using Ag paste. Supplementary Fig.  28 shows the difference in EL performance between the OLED devices before and after the delamination process. The difference in performance mainly originated from a thermal degradation induced by the LLO process.

Fabrication of adhesive blocking layer

For the fabrication of the PA-ABLs with open-area ratio ( \({\eta }_{{{\rm{open}}}}\) ) values of 0, 41%, and 88%, three templates with different surface shapes were prepared corresponding to each \({\eta }_{{{\rm{open}}}}\) values: a flat glass substrate covered by a 1 µm-thick fluorinated polymer layer for \({\eta }_{{{\rm{open}}}}\) of 0, a sapphire substrate with a 1.4 µm minor axis, 1.8 µm major axis microlens array (MLA) surface (HNPS01, LUMTEC, Taiwan) covered by the 1 µm-thick fluorinated polymer layer for \({\eta }_{{{\rm{open}}}}\) of 41%, and the sapphire substrate with the MLA surface covered by a 100 nm-thick Al 2 O 3 layer and fluorinated self-assembled monolayer (SAM) for \({\eta }_{{{\rm{open}}}}\) of 88% (Supplementary Fig.  12 ). All template substrates were sized 25 mm by 25 mm square. The fluorinated polymer layer (NovecTM 1700 Electronic Grade Coating, 3M TM ) was prepared by spin-coating followed by a curing process at room temperature for 10 min. The Al 2 O 3 layer was deposited by the ALD process. The fluorinated SAM was introduced using vaporized Trichloro (1H, 1H, 2H, 2H perfluorooctyl) silane (Sigma-Aldrich) in a vacuum desiccator. On top of the templates, A PDMS layer was spin-coated and cured at 100 °C for 30 min to be the PA-ABLs. The selection of PDMS was driven by its low modulus of elasticity and its compatibility with the reactive ion etching (RIE) patterning process using a metal mask. The thickness of the PA-ABL (= ca. 2.6 µm) was chosen by considering that PA-ABL should be thin enough so as not to make the PA-ABL/adhesive/elastomer assembly too stiff over tensile strain and that it should be thicker than the height of the concave lens array to be formed (Supplementary Fig.  29 ). The fluorinated polymer and the fluorinated SAM were introduced to reduce the surface energy of the templates, thus the PDMS based PA-ABL can be easily delaminated and transferred to the bottom elastomeric substrate coated with an adhesive, as described in the “ Transfer and 3D morphing processes ” section. For the PDMS layers to perform as PA-ABLs, which enables selective bonding between the OLED device layer and the bottom elastomeric substrate with an adhesive, they were patterned using the RIE process (RF power: 300 W, O 2 gas inflow: 25 sccm, CF 4 gas inflow: 10 sccm), through a metal shadow mask (Supplementary Fig.  12 ).

Transfer process and 3D morphing process

As a bottom elastomeric substrate, a 1 mm-thick elastomer (Dragon Skin 10, Smooth-on Inc.) film was formed through a spin-coating and curing process at room temperature for 6 h. An adhesive material (DOWSIL TM SE 9186) was spin-coated on the elastomeric substrate. A film tape (PI Film Tape 5413, 3 M) was used to cover the edges of the elastomeric substrate before the adhesive coating and removed together with the adhesive on it. This is to define the adhesive area on which the PA-ABL and the OLED device layer would be transferred. The elastomeric substrate was then, stretched by 30 mm in biaxial directions using a customized biaxial stage equipped with two motorized linear translators (T-LSR075D, Zaber Technologies Inc.), and an aligning block was positioned on the top. The 25 mm by 25 mm square substrate with the PA-ABL was positioned within the aligner, the PA-ABL was transferred onto the elastomeric substrate with the adhesive surface, and thus the adhesive turned out to be exposed only in the area without the PA-ABL. The OLED device layer was then, transferred onto the bottom elastomeric substrate aligned with the PA-ABL using the aligning block. During the transfer process, the OLED device layer was selectively bonded where PA-ABL was not applied thus, the adhesive was exposed. Considering the bottom emitting direction of the OLED device, the OLED device layer was attached in the upside-down direction. After the curing process of the adhesive at room temperature, the biaxial pre-strain applied to the elastomeric substrate was released, and consequently, the stretchable OLED device, initially in a 2D state, morphed into a 3D pop-up structure. Furthermore, to perform the electroluminescence characterization of the stretchable OLEDs, silver paste (P-100, CANS) was used to connect the OLED contact pads to the customized flexible printed circuit board (FPCB) for seamless external connection. While it was applied manually in this work, automatic dispensing equipment may be used to reduce the potential inconsistency of manual application and ensure uniform connectivity, crucial for reliable operation. Alternatively, anisotropic conductive film (ACF) may also be used 47 .

Finite element analysis (FEA) for out-of-plane buckled serpentine and convex deformation

The mechanical behaviors considering a serpentine interconnector under out-of-plane buckling and convex deformation of the stretchable OLED were analyzed by FEA using computational module software (COMSOL TM Multiphysics). The module analysis, based on geometric nonlinearity, was carried out under conditions stipulating a minimum element size of 5 μm and 15 μm for the serpentine interconnector and convex deformation, respectively, utilizing a stationary solver. The elastic moduli used in the analyses were 4 GPa for PI ( E PI ), 70 GPa for aluminum ( E Al ), 134.4 GPa for aluminum oxide ( E Al2O3 ), and 0.86 GPa for pV3D3 ( E pV3D3 ). For predicting the mechanical behavior of the elastomer, the analysis was conducted based on the Ogden model, which typifies a near incompressibility of hyperelastic materials.

Adhesion measurement and preparation of specimen

The double cantilever beam (DCB) fracture mechanics test was conducted to quantify the effective work of adhesion ( G c ) between the pV3D3 layer, that is, the top surface of the OLED device layer, and the PA-ABL make of PDMS. Two distinct types of specimens were prepared, each having either the surface of the pV3D3 layer or the PA-ABL. For the specimen with the pV3D3 surface, a 160 nm-thick pV3D3 layer was deposited using the iCVD process on a 25 μm-thick PI film, which served as a carrier substrate (see Supplementary Fig.  30 for illustration of specimen preparation). The other specimen with the PA-ABL was prepared to have the \({\eta }_{{{\rm{open}}}}\) values of 0, 41% and 88% on a flat glass or on sapphire glasses with an MLA surface, as described in the “ Fabrication of PA-ABL ” part in Methods . An adhesive glue (DOWSIL TM SE 9186 clear) was spin-coated on the back surface of the three PA-ABLs, and then 25 μm-thick PI films were attached to the adhesive glue as a carrier substrate. After the curing process of the adhesive glue at room temperature for 10 h, the PA-ABLs were delaminated from the flat glass and the sapphire glasses, with the support of the PI films. G c between the two specimens of the pV3D3 surface and the PA-ABL surfaces was measured using high-precision DCB test equipment (DTS Company, Delaminator Adhesion Test System). The prepared specimens were bonded with a 275 μm-thick Si wafer (size: 10 mm × 40 mm) as a back-up substrate to apply sufficient bending strain energy for the separation of the target pV3D3/PA-ABL interface. After adhering to the pV3D3 and PA-ABL interfaces, the specimen was mounted onto the loading grips, and a load ( F ) ― displacement ( d ) curve was obtained through the operation of a load cell and a linear actuator (Supplementary Fig.  13 ). G c , was then extracted from the F ― d curve using beam bending mechanics 39 , 48 , 49 . Note that G c is not determined solely by the load value but is significantly influenced also by the crack length. G c can be calculated using the following equation.

where a is the crack length, C is the elastic compliance, E’ is the plane-strain modulus of the beam, B is the specimen width, h is the half height for the substrate, and P c is the critical load where the load versus displacement curve begins to decrease. Since the measurement area of the DCB test was sufficiently large relative to the feature size of the micro-scale concave structure, the G c values derived from the DCB test can be considered as representative values and used for the analysis of the OLED device layer and the PA-ABL interfaces in the proposed stretchable OLEDs.

Measurement of pop-up rigid island counts

To observe the 3D morphing process of the stretchable OLED, the initial pre-strain applied to the elastomeric substrate was gradually released with the interval corresponding to the compressive strain of serpentine ( \({\varepsilon }_{{{\rm{comp}}}}\) ) of 5%. Orthogonal view images were captured using camera equipment (ILCE-7M3, Sony) equipped with a macro lens (FE 90 mm F2.8 Macro G OSS, Sony). The number of pop-up rigid islands in the fabricated stretchable OLEDs was counted from the orthogonal view images, as a function of \({\varepsilon }_{{{\rm{comp}}}}\) .

The electroluminescent measurements of the stretchable OLEDs

The optoelectrical performance of the stretchable OLEDs, including current density ( J ) and luminance ( L ), was measured using CS 2000 equipment (KONICA MINOLTA, Inc.) and a source meter (Keithley 2400, Keithley Inc.) under ambient conditions. The current efficiency ( η CE ) was calculated based on the J and L values. A system strain ( \({\varepsilon }_{{{\rm{sys}}}}\)  =  \({\varepsilon }_{{{\rm{x}}}}\,\) =  \({\varepsilon }_{{{\rm{y}}}}\) ) of up to 40% was applied to the stretchable OLEDs during the electroluminescent measurement, using the customized biaxial stage.

FEM-based mechanical simulation for array-based 3D pop-up simulation

A simulation study of the array-based 3D pop-up structure on the elastomer was performed using static analysis in ANSYS TM simulations. To achieve ideal strain uniformity on the elastomer, it was compressed in both vertical and horizontal directions equally. The stress-strain curves of an elastomer (Dragon skin 10) were measured using motorized force test equipment (ESM303 tensile tester, Mark-10), and results from these measurements were utilized as input data for simulations. The mechanical properties of elastomers were accurately modeled using Yeoh’s 2nd-order hyperelastic model derived from these curves 50 . The Young’s modulus and Poisson’s ratio for PDMS were set at 1.2 MPa and 0.49, respectively, while for the adhesive material (DOWSIL TM SE 9186), these were set at 1.1 MPa and 0.49. The three-dimensional structure was constructed using a 5 µm-thick layer of polyimide, which has an effective bending rigidity comparable to that of OLED materials.

Data availability

The data that support the findings of this study are available within the paper and its supplementary information files. Source data for Figs.  2 b, e, 3 b–d, 4a, b, d–g and Supplementary Figs.  1b , 3 , 7 , 8c –f, 9b , 10a , 12b , 14 , 18b , d, 20 , 22a , c–e, 23 , 26b , and 28b are provided in the Source Data files. Additional data are available from the corresponding author upon request.  Source data are provided in this paper.

Jeon, Y. et al. Parallel-stacked flexible organic light-emitting diodes for wearable photodynamic therapeutics and color-tunable optoelectronics. ACS Nano 14 , 15688–15699 (2020).

Article   CAS   PubMed   Google Scholar  

Kim, J. et al. Ultrathin quantum dot display integrated with wearable electronics. Adv. Mater. 29 , 1700217 (2017).

Article   Google Scholar  

Song, H. et al. Water stable and matrix addressable OLED fiber textiles for wearable displays with large emission area. Npj Flex. Electron. 6 , 66 (2022).

Article   CAS   Google Scholar  

Zhang, Z. et al. A colour-tunable, weavable fibre-shaped polymer light-emitting electrochemical cell. Nat. Photon. 9 , 233–238 (2015).

Article   ADS   CAS   Google Scholar  

Choi, M. et al. Full-color active-matrix organic light-emitting diode display on human skin based on a large-area MoS2 backplane. Sci. Adv. 6 , eabb5898 (2020).

Article   ADS   CAS   PubMed   PubMed Central   Google Scholar  

Zhang, Z. et al. High-brightness all-polymer stretchable LED with charge-trapping dilution. Nature 603 , 624–630 (2022).

Article   ADS   CAS   PubMed   Google Scholar  

Zhou, Y. et al. Stretchable high-permittivity nanocomposites for epidermal alternating-current electroluminescent displays. ACS Mater. Lett. 1 , 511–518 (2019).

Kim, R.-H. et al. Waterproof AlInGaP optoelectronics on stretchable substrates with applications in biomedicine and robotics. Nat. Mater. 9 , 929–937 (2010).

Larson, C. et al. Highly stretchable electroluminescent skin for optical signaling and tactile sensing. science 351 , 1071–1074 (2016).

Jinno, H. et al. Self-powered ultraflexible photonic skin for continuous bio-signal detection via air-operation-stable polymer light-emitting diodes. Nat. Commun. 12 , 2234 (2021).

Lee, W. et al. Universal assembly of liquid metal particles in polymers enables elastic printed circuit board. Science 378 , 637–641 (2022).

Lee, Y. et al. Standalone real-time health monitoring patch based on a stretchable organic optoelectronic system. Sci. Adv. 7 , eabg9180 (2021).

Kim, S. et al. Negatively strain‐dependent electrical resistance of magnetically arranged nickel composites: Application to highly stretchable electrodes and stretchable lighting devices. Adv. Mater. 26 , 3094–3099 (2014).

Li, S., Peele, B. N., Larson, C. M., Zhao, H. & Shepherd, R. F. A stretchable multicolor display and touch interface using photopatterning and transfer printing. Adv. Mater. 28 , 9770–9775 (2016).

Liang, J., Li, L., Niu, X., Yu, Z. & Pei, Q. Elastomeric polymer light-emitting devices and displays. Nat. Photon. 7 , 817–824 (2013).

Liu, W. et al. High-efficiency stretchable light-emitting polymers from thermally activated delayed fluorescence. Nat. Mater. 22 , 737–745 (2023).

Biswas, S. et al. Integrated multilayer stretchable printed circuit boards paving the way for deformable active matrix. Nat. Commun. 10 , 4909 (2019).

Article   ADS   PubMed   PubMed Central   Google Scholar  

Kim, D.-H. et al. Materials and noncoplanar mesh designs for integrated circuits with linear elastic responses to extreme mechanical deformations. Proc. Natl. Acad. Sci. USA 105 , 18675–18680 (2008).

Xu, S. et al. Stretchable batteries with self-similar serpentine interconnects and integrated wireless recharging systems. Nat. Commun. 4 , 1543 (2013).

Article   ADS   PubMed   Google Scholar  

Kim, T., Lee, H., Jo, W., Kim, T. S. & Yoo, S. Realizing stretchable OLEDs: a hybrid platform based on rigid island arrays on a stress‐relieving bilayer structure. Adv. Mater. Technol. 5 , 2000494 (2020).

Guo, Z. et al. Kirigami‐based stretchable, deformable, ultralight thin‐film thermoelectric generator for BodyNET application. Adv. Energy Mater. 12 , 2102993 (2022).

Qi, J. et al. A kirigami-inspired island-chain design for wearable moistureproof perovskite solar cells with high stretchability and performance stability. Nanoscale 12 , 3646–3656 (2020).

Lim, M. S. et al. Two-dimensionally stretchable organic light-emitting diode with elastic pillar arrays for stress relief. Nano Lett. 20 , 1526–1535 (2020).

Kim, J. et al. Stretchable silicon nanoribbon electronics for skin prosthesis. Nat. Commun. 5 , 5747 (2014).

Ahn, J. et al. Nanoscale three-dimensional fabrication based on mechanically guided assembly. Nat. Commun. 14 , 833 (2023).

Fu, H. et al. Morphable 3D mesostructures and microelectronic devices by multistable buckling mechanics. Nat. Mater. 17 , 268–276 (2018).

Lee, Y., Kim, B. J., Hu, L., Hong, J. & Ahn, J.-H. Morphable 3D structure for stretchable display. Mater. Today 53 , 51–57 (2022).

Ning, X. et al. Mechanically active materials in three-dimensional mesostructures. Sci. Adv. 4 , eaat8313 (2018).

Zhang, F. et al. Rapidly deployable and morphable 3D mesostructures with applications in multimodal biomedical devices. Proc. Natl. Acad. Sci. USA 118 , e2026414118 (2021).

Article   CAS   PubMed   PubMed Central   Google Scholar  

Lim, Seungyun et al. Assembly of foldable 3D microstructures using graphene hinges. Adv. Mater. 32 , 2001303 (2020).

Kim, Tae-il, Kim, Rak-Hwan & Rogers, JohnA. Microscale inorganic light-emitting diodes on flexible and stretchable substrates. IEEE Photon. J. 4 , 607–612 (2012).

Article   ADS   Google Scholar  

Yan, Z. et al. Mechanical assembly of complex, 3D mesostructures from releasable multilayers of advanced materials. Sci. Adv. 2 , e1601014 (2016).

Zhao, H. et al. Mechanically guided hierarchical assembly of 3D mesostructures. Adv. Mater. 34 , 2109416 (2022).

i, S. et al. Mechanics of buckled serpentine structures formed via mechanics-guided, deterministic three-dimensional assembly. J. Mech. Phys. Solids 125 , 736–748 (2019).

Zhao, J., Cao, H. & Shuai, Y. Theoretical modeling of vibrations of mechanically assembled 3D serpentine structures. J. Appl. Mech. 90 , 071002 (2023).

Timoshenko, S. P. & Gere, J. M. Theory of elastic stability . (Courier Corporation, 2009).

Kim et al. A single‐chamber system of initiated chemical vapor deposition and atomic layer deposition for fabrication of organic/inorganic multilayer films. Adv. Eng. Mater. 19 , 1600819 (2017).

Moon, Hanul et al. Synthesis of ultrathin polymer insulating layers by initiated chemical vapour deposition for low-power soft electronics. Nat. Mater. 14 , 628–635 (2015).

Kanninen, M. An augmented double cantilever beam model for studying crack propagation and arrest. Int. J. Fract. 9 , 83–92 (1973).

Kim et al. Fabrication of practical deformable displays: advances and challenges. Light. Sci. Appl. 12 , 61 (2023).

Nematollahisarvestani, Ali et al. A review on united states patents to prevent mechanical failures in foldable smartphones. J. Electron. Packag. 143 , 020802 (2021).

Kim et al. Precise tuning of multiple perovskite photoluminescence by volume-controlled printing of perovskite precursor solution on cellulose paper. ACS Nano 16 , 2521–2534 (2022).

Lee, Jongho et al. Stretchable GaAs photovoltaics with designs that enable high areal coverage. Adv. Mater. 23 , 986 (2011).

Lee, Donggyun et al. Stretchable OLEDs based on a hidden active area for high fill factor and resolution compensation. Nat. Commun. 15 , 4349 (2024).

Wang, P. et al. A 200 PPI oval shape stretchable AMOLED display. SID Symp. Dig. Tech. Pap. 53 , 524–525 (2022).

Jung, H. et al. High-resolution active-matrix micro-LED stretchable displays. J. Soc. Inf. Disp. 31 , 201–210 (2023).

Lee et al. Toward all-day wearable health monitoring: An ultralow-power, reflective organic pulse oximetry sensing patch. Sci. Adv. 4 , eaas9530 (2018).

Sharratt, B., Wang, L. & Dauskardt, R. Anomalous debonding behavior of a polymer/inorganic interface. Acta Mater. 55 , 3601–3609 (2007).

Kang, S. & Kim, T. S. Capillary‐force‐driven switchable delamination of nanofilms and its application to green selective transfer. Adv. Mater. Technol. 6 , 2001082 (2021).

Yeoh, OonH. Some forms of the strain energy function for rubber. Rubber Chem. Technol. 66 , 754–771 (1993).

Mohan, A. V. et al. Merging of thin‐and thick‐film fabrication technologies: Toward soft stretchable “Island–bridge” devices. Adv. Mater. Technol. 2 , 1600284 (2017).

Hu, H. et al. Stretchable ultrasonic transducer arrays for three-dimensional imaging on complex surfaces. Sci. Adv. 4 , eaar3979 (2018).

Choi, M. et al. Stretchable active matrix inorganic light‐emitting diode display enabled by overlay‐aligned roll‐transfer printing. Adv. Funct. Mater. 27 , 1606005 (2017).

Park, S. C. et al. Millimeter thin and rubber‐like solid‐state lighting modules fabricated using roll‐to‐roll fluidic self‐assembly and lamination. Adv. Mater. 27 , 3661–3668 (2015).

Han, M. et al. Catheter-integrated soft multilayer electronic arrays for multiplexed sensing and actuation during cardiac surgery. Nat. Biomed. Eng. 4 , 997–1009 (2020).

Kim, D.-H. et al. Epidermal electronics. Science 333 , 838–843 (2011).

Ohmae, H. et al. in SID Symposium Digest of Technical Papers . 102–105 (Wiley Online Library).

Van Den Brand, J. et al. Flexible and stretchable electronics for wearable health devices. Solid-State Electron. 113 , 116–120 (2015).

Kim, N., Kim, J., Seo, J., Hong, C. & Lee, J. Stretchable inorganic LED displays with double-layer modular design for high fill factor. ACS Appl. Mater. Interfaces 14 , 4344–4351 (2022).

Download references

Acknowledgements

We sincerely thank Dr. B. I. Choi from the Korea Research Institute of Standards and Science (KRISS) for the measurement of the water vapor transmission rate. S.B.K., D.G.L., J.H.K., T.H.K., J.H.S., S.J.O., S.I.H., W.C.L., D.H.C., T.-S.K., H.M. and S.Y. would like to acknowledge the financial support from the Engineering Research Center of Excellence (ERC) Program supported by the National Research Foundation (NRF), Korean Ministry of Science and ICT (MSIT) (Grant No. NRF-2017R1A5A1014708). S.B.K., D.G.L. and J.H.K. would like to acknowledge the financial support from the National Research Foundation of Korea (NRF) grant funded by the Korea government (MSIT) (RS-2024-00344386). J.-H.Y. would like to acknowledge the financial support from the Electronics and Telecommunications Research Institute (ETRI) grant funded by the Korea government. (21ZB1200, The Development of the Technologies for ICT Materials, Components and Equipment).

Author information

Authors and affiliations.

School of Electrical Engineering, Korea Advanced Institute of Science and Technology (KAIST), Daejeon, Republic of Korea

Su-Bon Kim, Donggyun Lee, Junho Kim, Taehyun Kim, Jee Hoon Sim, Sangin Hahn, Woochan Lee, Dongho Choi & Seunghyup Yoo

Electronics Telecommunications Research Institute (ETRI), Daejeon, Republic of Korea

Jong-Heon Yang

Department of Mechanical Engineering, Korea Advanced Institute of Science and Technology (KAIST), Daejeon, Republic of Korea

Seung Jin Oh & Taek-Soo Kim

Department of Semiconductor; Department of Chemical Engineering (BK21 FOUR Graduate Program), Dong-A University, Busan, Republic of Korea

Graduate School of Semiconductor Technology, Korea Advanced Institute of Science and Technology (KAIST), Daejeon, Republic of Korea

Seunghyup Yoo

You can also search for this author in PubMed   Google Scholar

Contributions

S.B.K. conceived the idea for the stretchable OLEDs with a 3D height-alternant island array, and S.B.K. and S.Y. conceived the idea for pop-up-assisting adhesion-blocking layers with an array of micro concave structures. S.Y., H.M., and S.B.K. coordinated experiments and simulations. S.B.K., D.G.L., and J.H.K. mechanically designed the stretchable OLEDs to maximize strain using modules based on the finite element method in COMSOL Multiphysics and ANSYS. S.B.K., D.G.L., and T.H.K. designed the associated experiments and measurement methods. S.B.K., J.H.S. and J.-H.Y. contributed to the optimization and yield improvement of the stretchable OLEDs fabrication process. S.B.K., S.J.O. and T.-S.K. performed and analyzed the measurements of interfacial adhesion energy. S.B.K., S.I.H., W.C.L. and D.H.C. performed and analyzed the measurements and demonstrations of the fabricated stretchable OLEDs. S.B.K. analyzed all the measurement data of the stretchable OLEDs, and S.B.K. and S.Y. coordinated the manuscript. All authors reviewed and discussed the results presented in the manuscript. S.Y. and H.M. contributed equally as corresponding authors.

Corresponding authors

Correspondence to Hanul Moon or Seunghyup Yoo .

Ethics declarations

Competing interests.

The authors declare no competing interests.

Peer review

Peer review information.

Nature Communications thanks Tae-il Kim, and the other anonymous reviewer(s) for their contribution to the peer review of this work. A peer review file is available.

Additional information

Publisher’s note Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Supplementary information

Supplementary information, peer review file, description of additional supplementary files, supplementary movie 1, supplementary movie 2, supplementary movie 3, source data, source data, rights and permissions.

Open Access This article is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License, which permits any non-commercial use, sharing, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if you modified the licensed material. You do not have permission under this licence to share adapted material derived from this article or parts of it. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ .

Reprints and permissions

About this article

Cite this article.

Kim, SB., Lee, D., Kim, J. et al. 3D height-alternant island arrays for stretchable OLEDs with high active area ratio and maximum strain. Nat Commun 15 , 7802 (2024). https://doi.org/10.1038/s41467-024-52046-6

Download citation

Received : 02 January 2024

Accepted : 23 August 2024

Published : 06 September 2024

DOI : https://doi.org/10.1038/s41467-024-52046-6

Share this article

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

By submitting a comment you agree to abide by our Terms and Community Guidelines . If you find something abusive or that does not comply with our terms or guidelines please flag it as inappropriate.

Quick links

  • Explore articles by subject
  • Guide to authors
  • Editorial policies

Sign up for the Nature Briefing newsletter — what matters in science, free to your inbox daily.

struct assignment array

  • Interview Questions on Array
  • Practice Array
  • MCQs on Array
  • Tutorial on Array
  • Types of Arrays

Array Operations

  • Subarrays, Subsequences, Subsets
  • Reverse Array
  • Static Vs Arrays
  • Array Vs Linked List
  • Array | Range Queries
  • Advantages & Disadvantages

Array Data Structure Guide

An array data structure is a fundamental concept in computer science that stores a collection of elements in a contiguous block of memory. It allows for efficient access to elements using indices and is widely used in programming for organizing and manipulating data.

struct assignment array

Array Data Structure

Table of Content

What is an Array?

Need of array data structures.

  • Types of Array Data Structures
  • Application of Array

An array is a collection of items of the same variable type that are stored at contiguous memory locations. It’s one of the most popular and simple data structures and is often used to implement other data structures. Each item in an array is indexed starting with 0 . Each element in an array is accessed through its index.

Arrays are a fundamental data structure in computer science. They are used in a wide variety of applications, including:

  • Storing data for processing
  • Implementing data structures such as stacks and queues
  • Representing data in tables and matrices
  • Creating dynamic data structures such as linked lists and trees

Types of Array

There are two main types of arrays:

  • One-dimensional arrays: These arrays store a single row of elements.
  • Multidimensional arrays: These arrays store multiple rows of elements.

Common operations performed on arrays include:

  • Traversal : Visiting each element of an array in a specific order (e.g., sequential, reverse).
  • Insertion : Adding a new element to an array at a specific index.
  • Deletion : Removing an element from an array at a specific index.
  • Searching : Finding the index of an element in an array.

Applications of Array

Arrays are used in a wide variety of applications, including:

Learn Basics of Array:

  • What is Array
  • Introduction to Arrays – Data Structure and Algorithm Tutorials
  • Applications, Advantages and Disadvantages of Array

Array in Different Language:

  • Arrays in C/C++
  • Arrays in Java
  • Arrays in Python
  • Arrays in C#
  • Arrays in Javascript

Basic Operations on Array:

  • Searching in Array
  • Write a program to reverse an array
  • Complete Guide On Array Rotations
  • Search, insert and delete in an unsorted array
  • Search, insert and delete in a sorted array
  • Sort an Array
  • Generate all subarrays

Easy Problems on Array:

  • Find the largest three elements in an array
  • Find Second largest element in an array
  • Move all zeroes to end of array
  • Rearrange array such that even positioned are greater than odd
  • Rearrange an array in maximum minimum form using Two Pointer Technique
  • Segregate even and odd numbers
  • Reversal algorithm for array rotation
  • Print left rotation of array in O(n) time and O(1) space
  • Sort an array in wave form
  • Sort an array which contain 1 to n values
  • Count the number of possible triangles
  • Print All Distinct Elements of a given integer array
  • Find the element that appears once in Array where every other element appears twice
  • Leaders in an array
  • Find sub-array with given sum

Medium Problems on Array:

  • Rearrange an array such that arr[i] = i
  • Rearrange positive and negative numbers in O(n) time and O(1) extra space
  • Reorder an array according to given indexes
  • Search an element in a sorted and rotated array
  • Find the Rotation Count in Rotated Sorted array
  • K-th Largest Sum Contiguous Subarray
  • Find the smallest missing number
  • Difference Array | Range update query in O(1)
  • Maximum profit by buying and selling a share at most twice
  • Smallest subarray with sum greater than a given value
  • Inversion count in Array using Merge Sort
  • Sort an array of 0s, 1s and 2s
  • Merge two sorted arrays with O(1) extra space
  • Majority Element
  • Two Pointers Technique
  • Find a peak element
  • Find a triplet that sum to a given value
  • Minimum increment by k operations to make all elements equal
  • Equilibrium index of an array

Hard Problems on Array:

  • Find k numbers with most occurrences in the given array
  • MO’s Algorithm
  • Square Root (Sqrt) Decomposition Algorithm
  • Sparse Table
  • Range sum query using Sparse Table
  • Range Minimum Query (Square Root Decomposition and Sparse Table)
  • Range LCM Queries
  • Merge Sort Tree for Range Order Statistics
  • Minimum number of jumps to reach end
  • Space optimization using bit manipulations
  • Sort a nearly sorted (or K sorted) array
  • Find maximum value of Sum( i*arr[i]) with only rotations on given array allowed
  • Median in a stream of integers (running integers)
  • Construct an array from its pair-sum array
  • Maximum equlibrium sum in an array
  • Smallest Difference Triplet from Three arrays
  • Find all triplets with zero sum

Quick Links :

  • ‘Practice Problems’ on Arrays
  • ‘Quizzes’ on Arrays
  • ‘Video Tutorials’ on Arrays

Recommended:

  • Learn Data Structure and Algorithms | DSA Tutorial
  • Introduction to Matrix or Grid – Data Structure and Algorithms Tutorial

Please Login to comment...

Similar reads.

  • Discord Emojis List 2024: Copy and Paste
  • Best Adblockers for Twitch TV: Enjoy Ad-Free Streaming in 2024
  • PS4 vs. PS5: Which PlayStation Should You Buy in 2024?
  • Best Mobile Game Controllers in 2024: Top Picks for iPhone and Android
  • System Design Netflix | A Complete Architecture

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

  • Stack Overflow for Teams Where developers & technologists share private knowledge with coworkers
  • Advertising & Talent Reach devs & technologists worldwide about your product, service or employer brand
  • OverflowAI GenAI features for Teams
  • OverflowAPI Train & fine-tune LLMs
  • Labs The future of collective knowledge sharing
  • About the company Visit the blog

Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Get early access and see previews of new features.

creating an array of structs in c++

I'm trying to create an array of structs. Is the code below valid? I keep getting an expected primary-expression before '{' token error.

  • data-structures

dda's user avatar

  • 1 Your example compiles without errors on ideone (gcc-4.5.1) ideone.com/c9kMr –  Praetorian Commented Jul 25, 2011 at 0:24
  • 5 This is because of new features inherent to initialization lists and C++0x ... his code does not compile under C++03. –  Jason Commented Jul 25, 2011 at 0:37

5 Answers 5

Tuomas Pelkonen's user avatar

You can't use an initialization-list for a struct after it's been initialized. You've already default-initialized the two Customer structs when you declared the array customerRecords . Therefore you're going to have either use member-access syntax to set the value of the non-static data members, initialize the structs using a list of initialization lists when you declare the array itself, or you can create a constructor for your struct and use the default operator= member function to initialize the array members.

So either of the following could work:

Or if you defined a constructor for your struct like:

You could then do:

Or you could do the sequence of initialization lists that Tuomas used in his answer. The reason his initialization-list syntax works is because you're actually initializing the Customer structs at the time of the declaration of the array, rather than allowing the structs to be default-initialized which takes place whenever you declare an aggregate data-structure like an array.

Jason's user avatar

Some compilers support compound literals as an extention, allowing this construct:

But it's rather unportable.

Dave's user avatar

  • It's in C99, so hardly "unportable" (depending on whether you want to support antique compilers or not). I prefer it in C to MakeCustomer(25, "Foo") which somehow generates worse code with GCC 4.2. I can't remember if it's in C++; I'm pretty sure (Customer){.uid=25} is not (though it may be in C++0x). –  tc. Commented Jul 25, 2011 at 0:47
  • @tc.: MSVC traditionally neglects C99 ; is MSVC 2008 an antique? (2010 is a little better.) –  Fred Nurk Commented Jul 25, 2011 at 1:02
  • If after over a decade, they can't be bothered, I'd say so. Then again, I consider most Windows C code "legacy" in terms of style, if nothing else. –  tc. Commented Jul 25, 2011 at 1:10

It works perfectly. I have gcc compiler C++11 ready. Try this and you'll see:

Mato's user avatar

you can use vector. First Define the Struct.

By using vector, you will have more freedom and access in the array of structure.

Now if want to add an struct element in the define array. You can use

you have now an array of struct.

Jesimiel Almedejar's user avatar

Your Answer

Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more

Sign up or log in

Post as a guest.

Required, but never shown

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy .

  • The Overflow Blog
  • The hidden cost of speed
  • The creator of Jenkins discusses CI/CD and balancing business with open source
  • Featured on Meta
  • Announcing a change to the data-dump process
  • Bringing clarity to status tag usage on meta sites
  • What does a new user need in a homepage experience on Stack Overflow?
  • Feedback requested: How do you use tag hover descriptions for curating and do...
  • Staging Ground Reviewer Motivation

Hot Network Questions

  • Does a party have to wait 1d4 hours to start a Short Rest if no healing is available and an ally is only stabilized?
  • how did the Apollo 11 know its precise gyroscopic position?
  • Why is notation in logic so different from algebra?
  • Should on use mutate or insert to update storage?
  • do-release-upgrade from 22.04 LTS to 24.04 LTS still no update available
  • Star Trek: The Next Generation episode that talks about life and death
  • Could an empire rise by economic power?
  • What was the first "Star Trek" style teleporter in SF?
  • Is it safe to install programs other than with a distro's package manager?
  • What is the term for the belief that significant events cannot have trivial causes?
  • What does "dare not" mean in a literary context?
  • Is there an error in Lurie, HTT, Proposition 6.1.2.6.?
  • How do I apologize to a lecturer who told me not to ever call him again?
  • A checkered cross - Colombian Sudoku
  • Can Christian Saudi Nationals visit Mecca?
  • In which town of Europe (Germany ?) were this 2 photos taken during WWII?
  • What does "Two rolls" quote really mean?
  • Why is a USB memory stick getting hotter when connected to USB-3 (compared to USB-2)?
  • How to Interpret Statistically Non-Significant Estimates and Rule Out Large Effects?
  • How to connect 20 plus external hard drives to a computer?
  • How can I play MechWarrior 2?
  • Nausea during high altitude cycling climbs
  • How should I tell my manager that he could delay my retirement with a raise?
  • Did Babylon 4 actually do anything in the first shadow war?

struct assignment array

IMAGES

  1. C Programming Tutorial

    struct assignment array

  2. How to Make an Array of Structs in C

    struct assignment array

  3. Array : Matlab array of struct : Fast assignment

    struct assignment array

  4. Array of Structures in C

    struct assignment array

  5. Structs and Arrays in C

    struct assignment array

  6. Array of Structs C++

    struct assignment array

VIDEO

  1. STRUCTS in C++ explained 🏗️

  2. That one struct teacher

  3. C2019 14 06 struct field assignment

  4. Functioned Struct Array

  5. Array of Struct dan Struct of Array

  6. Lecture 1_1 Struct, array of struct, pointers, and array with pointers

COMMENTS

  1. Assign to array in struct in c

    memcpy(test->mem, temporary, sizeof temporary); Regarding the edit to the question: Arrays may not be assigned; x = value is not valid if x is an array. However, structures may be assigned, so another alternative is to create a structure as a temporary object, initialize it, and assign it: // (After the malloc is successful.) static const Test ...

  2. Struct array assignment in c

    Struct array assignment in c [closed] Ask Question Asked 11 years, 4 months ago. Modified 11 years, 4 months ago. Viewed 13k times -3 This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the ...

  3. Structure Assignment (GNU C Language Manual)

    structure assigment such as r1 = r2 copies array fields' contents just as it copies all the other fields. This is the only way in C that you can operate on the whole contents of a array with one operation: when the array is contained in a struct. You can't copy the contents of the data field as an array, because.

  4. Array declaration

    Assignment. Objects of array type are not modifiable lvalues, and although their address may be taken, they cannot appear on the left hand side of an assignment operator. However, structs with array members are modifiable lvalues and can be assigned: ... However, structs with array members are modifiable lvalues and can be assigned: int a [3] = ...

  5. C struct (Structures)

    You will learn to define and use structures with the help of examples. In C programming, a struct (or structure) is a collection of variables (can be of different types) under a single name. ... is a struct Person array of ... [50]; int citNo; float salary; } person; int main() { // create Person variable person p1; // assign value to name of ...

  6. Struct declaration

    If a struct defines at least one named member, it is allowed to additionally declare its last member with incomplete array type. When an element of the flexible array member is accessed (in an expression that uses operator . or -> with the flexible array member's name as the right-hand-side operand), then the struct behaves as if the array member had the longest size fitting in the memory ...

  7. C Structures (structs)

    Each variable in the structure is known as a member of the structure. Unlike an array, a structure can contain many different data types (int, float, char, etc.). ... // Create a structure variable and assign values to it struct myStructure s1 = {13, 'B', "Some text"}; // Create another structure variable

  8. Array of Structures in C

    Here arr_car is an array of 10 elements where each element is of type struct car. We can use arr_car to store 10 structure variables of type struct car. To access individual elements we will use subscript notation ([]) and to access the members of each element we will use dot (.) operator as usual. 1. 2.

  9. Array of Structures in C

    For that, we can define an array whose data type will be struct Employee soo that will be easily manageable. Declaration of Array of Structures struct structure_name array_name [number_of_elements]; Initialization of Array of Structures. We can initialize the array of structures in the following ways: struct structure_name array_name [number_of ...

  10. Array of Structures vs Array within a Structure in C

    Array within a Structure. A structure is a data type in C that allows a group of related variables to be treated as a single unit instead of separate entities. A structure may contain elements of different data types - int, char, float, double, etc. It may also contain an array as its member. Such an array is called an array within a structure.

  11. How to Create Array of Structs in C

    Here, the studentRecord is an array of 5 elements where each element is of type struct Student.The individual elements are accessed using the index notation ([]), and members are accessed using the dot . operator.The studentRecord[0] points to the 0th element of the array, and the studentRecord[1] points to the first element of the array.. Similarly, The studentRecord[0].rollNumber refers to ...

  12. C Structures

    The structure in C is a user-defined data type that can be used to group items of possibly different types into a single type. The struct keyword is used to define the structure in the C programming language. The items in the structure are called its member and they can be of any valid data type. Additionally, the values of a structure are stored in contiguous memory locations.

  13. Struct and union initialization

    When designators are nested, the designators for the members follow the designators for the enclosing structs/unions/arrays. Within any nested bracketed initializer list, the outermost designator refers to the current object and selects the subobject to be initialized within the current object only.

  14. C structs and Pointers (With Examples)

    printf("weight: %f", personPtr->weight); return 0; } Run Code. In this example, the address of person1 is stored in the personPtr pointer using personPtr = &person1;. Now, you can access the members of person1 using the personPtr pointer. By the way, personPtr->age is equivalent to (*personPtr).age. personPtr->weight is equivalent to ...

  15. C Program to Store Information of Students Using Structure

    In this program, a structure student is created. The structure has three members: name (string), roll (integer) and marks (float). Then, we created an array of structures s having 5 elements to store information of 5 students. Using a for loop, the program takes the information of 5 students from the user and stores it in the array of structure ...

  16. How to Declare and Initialize an Array of Pointers to a Structure in C

    There is just a little bit of modification that we need to use the arrow operator to access the data present inside our structure pointer. Step 2 - Accessing the pointers within the array. Syntax: <array_name> [<index_number>] -> <data to be accessed which is present inside the structure >. Example: C.

  17. Dimension Influence on the Interface Fatigue ...

    As the interconnected structure of 3D chip, through.silicon via undertakes the key functions in energy transmission, mechanical support and signal transmission of 3D chip. With the increasing of TSV interconnection density, the reliability of TSV is becoming increasingly prominent, and the slight variation of TSV dimension may exert severe impact on the fatigue life of the TSV array. In this ...

  18. Why struct assignment works with arrays in structs

    1. The struct name for a struct containing a fixed-length array is treated as a contiguous object and therefore assignable, while an array name is interpreted as the address of the first element except in the case where it is the operand of the sizeof operator and unary & operator. edited Mar 3, 2016 at 1:41.

  19. 3D height-alternant island arrays for stretchable OLEDs with high

    S.B.K. conceived the idea for the stretchable OLEDs with a 3D height-alternant island array, and S.B.K. and S.Y. conceived the idea for pop-up-assisting adhesion-blocking layers with an array of ...

  20. Array Data Structure Guide

    An array is a collection of items of the same variable type that are stored at contiguous memory locations. It's one of the most popular and simple data structures and is often used to implement other data structures. Each item in an array is indexed starting with 0 . Each element in an array is accessed through its index.

  21. creating an array of structs in c++

    vector<Customer> array_of_customers; By using vector, you will have more freedom and access in the array of structure. Now if want to add an struct element in the define array. You can use. array_of_customer.push_pack(/* struct element here */) Example: Customer customer1; customer1.uid = 01; customer1.name = "John Doe";